I forget how I got linked back to this, but I figured in the new year vogue, I’d make a video to show how … convaluted it is to build dungeon via f2c.
As you can see, first I have to compile f2c as a Windows QuickWin exe as the MS-DOS version just runs out of memory without some kind of DOS Extender, and Windows 3.0 makes a suitable extender..
Next, I had to make a ‘list’ program that then exectued f2c against the Fortran converting them to C. Then finally I just compile the libf2c components, then statically add in the Dungeon source that was just converted. There is some ‘out of range’ case statement, not sure why, but it works… as you can see.
It builds/runs in 286 enhanced mode and beyond.. Obviously the more memory the better.
This was on Qemu 0.15.0 with MS-DOS 4.01 & Windows 3.0
So while I was playing around with the idea of a Windows 3.0 powered (lol) BBS I ran into one weird thing with it swapping like crazy, and eventually depleting all my disk space!
Well when I actually used Windows 3.0 back in the day, I had a 286 so I never got to play with virtual memory. By the time I got a 386, I was using Windows 3.11 & OS/2 which in Windows you configure it with the 386 icon in the control panel. On OS/2 it’s a line in the config.sys.
But for Windows 3.0 it’s a standalone program, swapfile.exe. And the best part is that you cannot run it in 386 Enhanced mode, nor in standard (286) mode. You have to first start Windows in realmode.
So now I could force it to swap on a secondary drive, or more importantly contain it’s filegrowth so it doesn’t take up the entire disk.
Well I was playing some more with my MS-DOS setup, and the annoying thing is that it doesn’t idle worth anything.
And of course running old DOS doesn’t help that most everything needs MS-DOS 5.0 or higher.
But then I found WQGHLT, which is a VXD to support idling under Windows 3.1. And happily it works on Windows 3.0 …
The only pain is that running MS-DOS applications kills the CPU (again). Which means that the DOS programs themselves need to idle. And yes I did check the ‘detect idle’ but it seems that it doesn’t do what I’d hope.
Maybe it’s just the software, I should try some more and see what I get.
HTI (Hates the internet) chose this program called rlfossil, which is for MS-DOS..
RLFOSSIL is an implementation of multi-line serial port driver corresponding to the Fido/Opus/Seadog level 5 specification and a simple HAYES-compatible modem emulator. It allows applications usually worked through BBS’s to run on the Internet, or in IP-based local net.er, and rlogin and telnet emulation using IP services numbers 513 & 23. RLFOSSIL allows combined work with other FOSSIL drivers (X00,BNU etc.).
So I thought between that, and all the Windows/386 excitement I’d try for something even more insane. How about running a multiline BBS on Windows?
So in the same effort, I was going to use Qemu 0.14.1, with MS-DOS 4.01 (the first version I could find that came with share.exe), and Windows/386 2.11. The installation of MS-DOS 4.01 worked fine on an 80MB disk image, thankfully it was one of the things that DOS 4 could do better then 3 is large disk images… Yes I know 3.31 could as well, but it didn’t come with share so it was out. One strange thing after install was this message…
It is kind of forboding that DOS is warning me that because of my “large” disk I better run share. Since I plan on having a multi node BBS all in one computer, I need to run share anyways.
The next exciting part was installing Windows/386 2.11. The installation went pretty smooth, and with Qemu the mouse worked fine. So far, so good. I couldn’t use himem.sys that comes with Windows/386, nor could I use the himem.sys that comes with MS-DOS as the Windows/386 version complains that that A20 line is already active (?) and the MS-DOS one has Windows complaining that the HMA is already in use. Sadly then my conventional memory footprint will be unsatisfactory, but I don’t see any way around it.
The next part is configuring rlfossil. rlfossil needs a driver to talk to the network card, and you can find them on crynwr, namely the ‘other‘ packet archive, which contains NE2000 drivers. Keeping with HTI, I’m going to use the NE2000 and configure Qemu with the PCI NE2000 driver.
Packet drivers are loaded from the command line something like this:
ne2000 0x60 11 0xc100
This loads the driver on software interrupt 0x60, and by default the PCI NE2000 is configured for IRQ 11, port 0xc100. Qemu 1.6.0 changed the PCI NE2000 to use port 0xc000 for what it is worth..
So keeping with the HTI tradition, I’m going to put my packet driver (ne2000.com) and unpack the rlfossil archive in c:\packet. The next thing to do is configure rlfossile which uses the wattcp configuration file. Since I’m going to use the usermode NAT and a redirect, I configure my VM like this:
This configures the VM for 16MB of ram (which would have cost a FORTUNE back then), the PCI NE2000, and it’ll redirect telnet from my host machine into the VM.
And just like HTI, I went with telegard, because it supports fossil based ports.
Well that sure was a *LOT* of work, and surprisingly testing it with a single node, actually works. And you can bring up a few other MS-DOS prompts and it’ll work fine. But if you launch the second node…
Disaster struck. So needless to say, while Windows/386 was pretty slick for the day it just couldn’t measure up. So I figured for the hell of it, I’d try Windows 3.0 I mean I would have imagined that Windows 3.0 most certainly could NOT handle this kind of challenge.
So with some disks shuffled, I fired it up and..
It actually worked! So with a LOT of chaos going on I managed to get Trade Wars 2002 running, although I couldn’t figure out how to automatically figure out the node.. Hell the whole door configuration thing is.. bizarre. Synchronet really kicks ass in regards to easy of configuration.
And using PIF’s to configure each node for some easy of launching, and some reduced memory, I could easily run all four nodes that rlfossil can support.
I have to admit, Windows 3.0 really is impressive considering all the UAE’s and how generally crappy we thought it was at the time. I’m sure even emulated having a multiple Ghz cpu helps quite a bit.
And look at all that memory.. I guess it’s pretty impressive it even works. Since Windows anything throttles the CPU at 100% I’m not going to put this online…. Although at the same time combined with an CPU idle program (is there a Windows 3.0 idle vxd?) it sits ok, but who wants a single user system in 2011?
There is no denying it, when it comes to revolutionary products you simply cannot ignore the powerhouse that was, Windows 3.0 . Simply put this is what made the Microsoft empire, broke the alliance with IBM, and changed the future of OS/2 3.0.
Not only that, but Windows 3.0 changed the way businesses operate world wide, and finally delivered on the ‘dream’ of what could be done with the 286/386 microprocessor where OS/2 had failed.
To really appreciate Windows 3.0 you have to see the world as it was before it was under development. Back in 1989 the pc market was in turmoil. While OS/2 had the promise of breaking all the old barriers of the real-mode only OS MS-DOS, it simply cost too much, and hardware compatibility was just too poor. The other striking thing was that the only 386 specific feature that OS/2 1.2 (current version in 1989) could exploit was that the 386 could quickly move in & out of 286 protected mode. The LAN server product also had a 386 specific HPFS driver, but that was it. OS/2 1.2 was still limited to a SINGLE MS-DOS box.
And there wasn’t a heck of a lot you could do memory wise. Not to mention there was no ability for the DOS session to use EMS/XMS memory. It’s no wonder it became to be known as the ‘penalty box’.
Meanwhile, Windows/386 circa 1987 could run multiple MS-DOS VDM’s on the 386 processor. You were only limited by how much extended memory was in your system. Windows/386 exploited the v86 mode of the 386 processor which allowed for hardware virtualization. However Windows itself was a ‘real mode’ program, meaning that it had to fit in 640kb of ram, just as the VDM’s it spawned had to.
So unless your goal was to run a bunch of MS-DOS sessions all your extra memory was for nothing. That also included Windows programs since they all ran in real mode. For people with enough disk space you *could* actually install one copy of Windows/386 in say VGA, then another with a lower video resolution (CGA or EGA), then actually run Windows in Windows… in a Window. But it really wasn’t that useful, it ran better full screen. And all this had the effect of doing was partitioning your windows programs from each other, if you dedicated a VM per application. Needless to say with OS/2 2.0’s seamless windows this was far more easier to setup, and frankly far more practical.
In 1989 building large applications meant that you either forced people to use Unix (SCO Xenix!) or OS/2. For those that could afford it, Xenix would have been the way to go, as they not only ran in 386 protected mode, offered a far larger address space, but it was also multiuser! But Xenix was expensive, needed specialized knowledge. And as mentioned the cost of OS/2 development was HIGH, and it required your end users to have OS/2 (naturally). And the users would have to fight that a lot of PC/AT compatible PC’s on the market were not compatible enough to run OS/2. Despite this a lot of banks latched onto OS/2, and some still use it today (look at why parallax came into existence!). Then out of nowhere, PharLap had developed a piece of software that changed everything, the DOS Extender.
Originally for 386 computers, the first DOS extenders required people to use special 386 compilers, runtimes, and of course linkers & extenders. The tools were expensive, the right to redistribute wasn’t free, but end users could run your multi-megabyte (lol) applications on regular MS-DOS. Which is what 99% of PC’s were running, and it didn’t require users to change their OS, abandon their applications, it would simply just work.
One of the earliest and most popular DOS Extended game/application was Access Software’s Links 386 pro. That’s right this game ran in protected mode! .. And it would *NOT* run under, or near Windows/386.
It was out of this wildly great but incompatible world that the first DOS Extender vendors, tried to standardize their products with the original and short lived VCPI specification, from Phar Lap. However in 1989 Microsoft was busy working on Windows 3.0 as the next great thing. Using a protected mode debugger, they were converting Windows/386 from a real mode ‘hypervisor’ into a protected mode application. And if Windows couldn’t run these new extended applications, then people would naturally have to exit Windows to run them. And that was the major problem with Windows is that people may have an application for windows but they spent most of their time in DOS. So Microsoft’s Ralph Lipe came up with the DPMI specification, managed to get all of the major vendors to support and take over it, in exchange for leaving Windows as a 0.9 level client/server. After all why would you need their products if Windows were to incorporate the entire 1.0 spec? At the time it was a big deal, but the success of Windows would eventually kill the extender market save for video games until Windows 95. There is a great article about the rise of DPMI here.
So with a firm dos extended foundation Windows 3.0 could do something the 2.x products could never do, which was to actually utilize all the memory in peoples computers. And because it hinged on a dos extender (ever wonder what dosx.exe was?) it meant that there was no special disk, mouse, network driver/software needed as it could jump out of protected mode, and call real mode software like the BIOS, or even mouse drivers if need be. However older protected mode programs would only error like this:
Another popular application for MS-DOS just happened to be Lotus 1-2-3, and it was *NOT* DPMI compliant. Oh sure they had DOS & OS/2 support, but would you believe that the OS/2 version wouldn’t run in a Window? Oh sure the install program may have, but some how someone didn’t think there would be any value in being able to SEE more then one application at a time. Not to mention the dark horse, Excel was starting to sell in 1987 like crazy, in 1988 Excel actually started to out sell 1-2-3, and by 1989 it was already over.
There is no doubt about it, GUI applications were taking over. The old ‘DOS’ interface was dead. And Lotus had basically killed their product line by providing an identical interface and experience to their customers by providing an OS/2 application that looked and felt just like the MS-DOS application. While you may hear that Lotus got distracted with OS/2 and missed releasing a Windows version of 1-2-3 to counter the rise of Excel, the truth is that they straight up missed windowing UI’s. Their hubris is that the users simply didn’t like the 1-2-3 interface, they wanted a windowed application.
What they did want was graphical Windows, and of course more memory! And there is nothing more annoying than having say 16MB of VERY expensive memory in a computer like a 286, but being restricted to 640kb or less is just … insane.
So let’s see Excel in action. Excel 2.1c shipped with a ‘runtime’ version of Windows 2.1. Mostly because nobody was buying Windows in 1987 Microsoft had to do something to get people running the thing. So the best way was to allow you to run an application with it. By late 1989 and early 1990 application vendors were making updates to their products so that they could run under Windows 3.0. And here is the first version of Excel to do so.
So here we have Excel running under Windows 2.1 ala the runtime environment. All you have here is excel. Also worth noting is that the setup program is 100% DOS text based.
Moving forward we can now upgrade to Windows 3.0.
So as you can see Windows 3.0 takes up 30kb more memory then Windows 2.1! For someone with an XT this could mean bad news! Now it’s time to see what all the babling was about, running the same application in protected mode to access more memory!
Now we are running in 286 ‘standard’ mode. Notice that Excel thinks it’s conventional memory, but we now have 14MB of the computers installed 16MB accessible to the application! Now this is pretty amazing stuff! Now it’s no secret that the 286’s memory management left a lot to be desired, and Microsoft really didn’t want to write for it, as the 386 was where they wanted to be. So unlike OS/2 the 286 cannot swap. You are only limited to what extended memory you have in your computer. But this is different for the 386..
And here we are, 386 enhanced mode! So finally our Windows applications are clearly running in protected mode, with demand paging! With 36MB of available memory in a computer with 16MB of ram. The colors are distorted on Virtual PC under 386 enhanced mode… But as you can see the environment runs! And even graphical programs that for example used CGA could happily run on an EGA system in a window. Even better you could copy the screen, and paste it into any Windows application you want. Yes you could buy games and use them for clipart!
Another feature of Windows 3.0 that people didn’t realize is that it could pre-preemptively multitask DOS based VDM’s
As you can see, there it is, the timeslice, and scheduling options.. Great ways to confuse users for decades… 🙂
As always, there is a great InfoWorld article here.
So why was Windows 3.0 successful? A lot of it is timing, as there was no other environment that could offer people access to their whole machine without upgrading their operating system. And of course there was the whole thing with bundling Windows, Word & Excel with new computers. I mean who would resist something like a graphical application like Excel when compared to the klunky and significantly more expensive 1-2-3? Sure the bundling practices were found to be illegal, but looking back, Lotus & Word perfect basically GAVE Microsoft the market. And of course, talk about aggressive upgrades! I’m not sure they even do such things anymore. Although I’ve heard of big companies, and governments pushing for discounts for running things like Linux.
And there is the other things that Windows 3.0 supported that OS/2 simply did not. For starters backgrounds (wallpapers), and of course the desk accessories. Sure they sucked but in a panic at lest you *could* do something… where OS/2 basically left you in the lurch. Not to mention how much more expensive OS/2 was when compared to Windows.
So with all that out of the way, what fun is a write up without a demo?
And thankfully I’ve found all the bits in prior posts, and I can put them together right here.
Someone managed to save the Word 2.0 demo executable, and a few files to do with it, but not the install. It appears to work ONCE per session, and if you launch word twice it’ll destroy the install… Very strange.
But for anyone looking for a demo copy of Word 2.0, along with Excel, Powerpoint & Schedule, it’s right here.
It runs great in DOSBox, and really if you use these for a few minutes, then try the later ones, what are you really missing?
So with a little pushing around I managed to create a stand alone version of dungeon (zork) for Windows 3.0 . Naturally this version doesn’t require windows, just some kind of MS-DOS system with a 80286 processor, and either EGA or VGA graphics card. I guess I could have tried some CGA/MDA love but I didn’t.
So for anyone wanting to have some fun with an ancient box, I’ve provided both floppy disk images, and an install directory source to install this. It’s kind of funny how 7zip can get another 50% on the Windows 3.0 compress utility.
Otherwise it’s like the other Windows Demo/Working model software..
This is the old f2c version of dungeon/zork I ported ages ago. Oh and thanks to the magic that is jdosbox, you can testdrive it from a Java enabled pc just by simply clicking here.
With the dawn of Windows 2.x there was some push to make Windows a ‘runtime kit’ or basically Microsoft would let vendors ship a stripped down version of windows with their application to get people used to the idea of Windows. Back in the 1.x & 2.x days nobody really used it full time, but it was more so for the one or two applications of the time that needed it.
Adobe Pagemaker was the first application to take advantage of this runtime version of windows, but with the introduction of Windows 3.0 it was the end of the runtime version.
However Microsoft did have a ‘working demo’ version of Windows 3.0 . I still haven’t been able to track this down, however I have been able to find working demos of Power Point, Excel and Schedule.
So let’s take a look at this little thing, shall we?
For anyone who want’s to check it out, you can download this file, which has the whole thing setup. If you want to install it yourself, you can find what I’ve found so far here.
I’m running this under DOSBox, so I don’t have to worry about copying files in & out, or redistributing any operating system, like MS-DOS.
As you can see from the MS-DOS setup, it looks pretty similar to the Windows 3.0/3.1 setup that we all know.
And just like 3.0 / 3.1 there is also a graphical phase.
Once the setup is complete we run this demo as ‘windemo’.
As you can see it looks just like Windows 3.0. Well for the most part it is Windows 3.0 .
And as you can see, the demo executes in 286 protected mode, giving us the maximum 16mb of ram.. Not to bad for a demo.
So we get a limited version of Excel 2, that is good enough to test out some basic stuff.. Or for basic people it’s really all you would ever need. And yes the model will let you save, print, and do a simple graph. I think that is what the bulk of people with Office 2010 do anyways, here you go, and for FREE!
Next is Powerpoint 2.0 I’ve never been one for presentations myself, but here is a ‘hand tiger’.. I’ve never gotten why the clipart is so .. clipped, but there you go. Sorry no Ligers.
And finally Microsoft Project 1.0 The tutorial is lubriciously missing. Perhaps there should have been some kind of written pamphlet that accompanied the disk? Also see the conventional memory? This screams Windows 2.0 application.
Of course the working model of Windows 3.0 will not let you run ‘normal’ applications. But exiting, and copying the application to ‘progman.exe’ will get you there.
This is my f2c port of dungeon (zork) to win16, running on this minimal environment without issues.
Who knows there may be enough windows there to host QuickC for Windows. I haven’t tried, I have a real copy of 3.0 so I’ve not worried. But for you other people……
If anyone has a working model of Word, let me know…
Ok, so I was looking at this ancient machine the other day, and I was wondering if I could at least build the f2c to run on either Win16 or OS/2 1.x. There was mention of it running on MS-DOS ages ago but I thought it’d be more interesting to try something else…
Well one thing is for sure, QuickC for Windows, wins HANDS DOWN for a ‘nice’ environment for building stuff… Once it was all said & done, on Windows 2000, I had f2c running, and converted the dungeon source, and building dungeon along with the libf2c. I couldn’t find a ‘nice’ way to build libraries with QuickC, and building a windows dll for libf2c would mean re-writing the IO for Win16.. If it were 15 years ago I may have done so, but nobody will use it now, so I just took the short cut of compiling the dungeon program & the library together… Surprisingly on a ‘fast’ machine with Virtual PC, 100,000+ lines of code compiles in under 10 seconds!
So the first result I got for my effort was this:
Which wasn’t that bad, and I’m just amazed it works… You can download it from here. And thanks to the power of jDOSBox, you can run it live here.
The next thing I did was break out some ancient Microsoft C, and start to build f2c. That is when I found out that the resulting exe with C 5.1 doesn’t work, and 6.0a crashes when compiling part of the translator… However using 6.0a for *MOST* of f2c, and building the one faulting module with 5.1 results in a working f2c. The library built without issues, although I had a *HELL* of a time trying to remember how to build a static library for OS/2. I ended up just using lib & gluing it together one object file at a time… Not the ‘best’ but it works.
The next hardest thing was figuring out the linker definitions & response files to build a ‘windowed’ text client for OS/2. Luckily I was able to go through enough things to do it, and it was a LOT of work…. I almost wonder if it’s worth posting about it… But all my build steps are in the zip file located here.
It was a *LOT* of nonsense work to get this thing in a window for a good screencap… lol but in the end I guess it was worth it. I suppose I could try building it for MS-DOS, but really, where is the fun in that?
One thing is for sure, having this back when I actually used OS/2 1.3 or Windows 3.0 (I had CGA!!!) would have been cool… But now I guess it’s totally pointless, but whatever.