Main

 
On DOS and Windows versions
On the Hardships of Migrating to Windows

and the DOS-Appeal of RF21

Versions 0.77 through 0.81 are available as 32-bit DOS-extender applications only. Version 0.82 and following are native Windows 98 applications compiled with Visual C++ 6.0 from much the same source files as the former DOS versions. Windows and DOS are intrinsically different programming environments. Windows offers a new set of standard features to the user, thereby creating new "what if"s for the programmer to take care of. I had to march along these new requirements for a distance, but not the full way. Instead of writing a completely new program, which would have taken over a year, I just created a function layer interfacing between the Windows API and the DOS logic of the existing program. This could happen in a few months. Consequently, the program still is keyboard operated (except for mouse-editing of plots). It looks and smells like a DOS application while executing in a "genuine" Windows window. Unlike the DOS versions, it can now coexist with other applications on the same screen. This is a gain in convenience for all users who did not like its previous manner of enforcing the 640x480 pixel, 16 color graphic mode and taking exclusive control of the VGA adapter.
      Beyond this, a mathematics application has little to gain from Windows. I'm in no hurry to restructure the user interface. All the "bells and whistles" Windows has to offer would become portability problems in case I'll ever have to migrate again. They would slow me down and create an additional potential for problems. For instance, Windows has this very sophisticated way of selecting a font. I hope it's not too sophisticated to work on your system, too!  I would have liked to embed two or three standard fonts in the -.exe file itself (like I did in the past) and to be independent of whatever is installed on a user's computer. But Windows doesn't let me do this. So I wish everybody good luck !
     What if the program was operated through a menu, instead of being keyboard-operated ?  What if the help screens could be moved out of the way and stand by, while you are working with the program ?  Or if the designer plots had their own, independent window ?  Why do the many lists have fixed positions, instead of being moveable like genuine Windows dialogues ?
The answer is, that all these things are nice if you don't have to create and maintain them. They don't bring real potential and benefits, they are just nice. Introducing them opens the door to a new set of problems, bugs and instabilities which are nonexistent at the moment.
     I did add a menu and a STOP button. As a consequence, I had to worry about when this STOP button and other menu points should be enabled or disabled. While the result is "nice", I had to create a new class to control the menu, add global variables and add commands to virtually every program part. Still, there are corners left where the menu doesn't behave quite consistent and logical.
    This is what I mean. You create unnecessary problems when trying to support too much. For proof, look at the Windows98 operating system. Some things are good (those borrowed from the Macintosh) while others are a nuisance. They placed things right in front of my nose that I don't need and can't get rid of. Other things that I was used to work with aren't supported any more or have become unstable or hidden between too many other options. The system changes its properties behind my back and I don't see how to restore its previous behavior. It doesn't do what I want, it has its own ideas how things should be. It is, in a word, a bad operating system, teaching me how NOT to write programs. A program should be fully subordinate and at the user's service, not patronize or keep him waiting. It shouldn't ask too many questions or fake "intelligence" in other ways.
      A good program in this sense is Microsoft's Visual studio. It was written to accomodate a programmer's real needs and offers integrated browsing and debugging features that are helpful and speed up one's work. So I hope that, in the long run, I can make up for the time lost in the porting process.
      Persuading Windows to accept a DOS program structure was not easy and required a double threaded application. While a computation is under way, you may wish to move or minimize the window. Of course this must not interfere with the computation - or the program structure is a mess!  So there had to be separate threads to take care of the window (thread 1) and to execute the actual contents (thread 2) which are dating back to better (DOS-) times.
Despite such complications, the Windows version is not slower than its DOS predecessor, upon tests I conducted it was 17% faster.