Wer möchte kann Windows 3.1 direkt auf einem geeigneten PC installieren, aber heutzutage einfacher ist die Installation in einer DOSBox. Das funktioniert besser als in einer "normalen" Virtual Machine. Eine sehr ausführliche Anleitung gibt es hier, die Kurzfassung lautet:
setup.exe
ausführenDanach sollte es möglich sein, Windows 3.1 in hohen Auflösungen wie etwa 1024x768 sowie mit hoher Farbtiefe (64k bzw. TrueColor) laufen zu lassen. Wer das noch nie gesehen hat, sondern mit 16-Bit-Windows immer nur 640x480 Pixel in 16 Farben assoziiert hat, der wird Bauklötze staunen...
Auf openwatcom.org findet man unter dem Punkt "Download" den "Installer for
C/C++" in verschiedenen Versionen. Für unsere Zwecke benötigen wir die Version für
DOS, denn die Version für Windows bezieht sich auf Win32. Derzeit aktuell ist
open-watcom-c-dos-1.9.exe
. Die Installationsdatei muss in die DOSBox befördert und dort
ausgeführt werden, die Installation selbst läuft im DOS-Modus ab (unabhängig davon, ob sie vor
dem Start von Windows oder von Windows aus gestartet wird). Durch die Dialoge navigiert man mit TAB und
Leerzeichen.
Es lohnt sich den Installationsumfang zu reduzieren, eine vollständige Installation benötigt rund 315
MB. Wer dennoch eine vollständige Installation durchführen möchte, der muss
höchstwahrscheinlich das Ziellaufwerk mit der Option -size
bzw. -freesize
mounten,
damit genügend Platz verfügbar ist. Derzeit werden Laufwerke von DOSBox so gemountet, dass immer 250 MB
frei sind (also dynamisch mitwachsend).
Benötigt werden mindestens folgende Komponenten:
Damit kommt man auf deutlich unter 50 MB. Die Hilfe-Dateien lassen sich auch von der Webseite als PDF runterladen und sind wirklich lesenswert.
Um die grafische Entwicklungsumgebung (C:\WATCOM\BINW\IDE.EXE
) nutzen zu können ist noch eine
manuelle Änderung der Datei C:\WINDOWS\SYSTEM.INI
im Windows-Verzeichnis notwendig: hier muss
im Abschnitt [386Enh]
eine Device-Zeile mit dem Wert wdebug.386
hinzugefügt
werden. Andernfalls erhält man im späteren Verlauf die Meldung "VxD: WDEBUG.386 not present". Warum man
das aus dem Manual bzw. der FAQ herauslesen muss, anstatt dass es das Installationsprogramm für einen
erledigt, erschließt sich mir nicht so ganz.
Auf der Kommandozeile geschieht das Übersetzen mit dem Programm C:\WATCOM\BINW\WCL.EXE
("Open
Watcom C/C++16 Compile and Link Utility"), das sich bei ordentlicher Installation bereits im Suchpfad befindet.
Mit der Option -bcl=windows
teilt man mit, dass ein Windows-Programm erzeugt werden soll. Das allein
reicht aber noch nicht, man erhält noch Compiler-Fehler auf Grund fehlender Include-Dateien. Hier gibt es
zwei Möglichkeiten:
INCLUDE
um C:\WATCOM\H\WIN
ergänzen-i
angebenBeim zweiten Weg sähe die Befehlszeile z.B. wie folgt aus:
C:\PROJ\HELLO>wcl -bcl=windows -i=c:\watcom\h\win hellowin.c
Heraus fällt eine ca. 2 KB große HELLOWIN.EXE
, die unter Windows ausgeführt werden
kann.
Die Open-Watcom-Suite bringt eine Vielzahl an Einzelprogrammen mit. Für die "normale" Entwicklung wird die
Open Watcom IDE verwendet. Dahinter steht C:\WATCOM\BINW\IDE.EXE
, die auch manuell
gestartet werden kann.
Als erstes wird ein neues Projekt angelegt. Dabei wird der Name und das Arbeitsverzeichnis festgelegt (in-source-build). Es werden anders als z.B. bei Visual C++ keine weiteren Unterverzeichnisse angelegt. Die Default-Einstellungen "Win16" und "Executable" passen.
Als nächstes müssen dem Projekt noch Quellcode-Dateien hinzugefügt werden. Dies geschieht über den "Add File(s)"-Dialog, der etwas unintuitiv ist: zunächst fügt man die Dateien in eine Liste von Dateien hinzu, die dann mittels Klick auf "Close" hinzugefügt werden. Dabei können die Dateien entweder per Klick auf "Add" zu der Liste hinzugefügt werden, oder durch Doppelklick auf den Dateinamen im oberen Bereich.
Durch Klick auf den "Make"-Button wird das aktuelle Target erstellt. Alternativ kann man auch aus dem Menü "Targets" den Eintrag "Make" wählen (oder F4 drücken). Bei nur einem Projekt hat dies den gleichen Effekt wie "Make All" (F5).
Durch Klick auf den "Run"-Button bzw. "Targets"/"Run" (Strg+R) wird das Programm gestartet.
Die grafische Entwicklungsumgebung kann noch viel mehr. Im Folgenden möchte ich ein paar nützliche
Funktionen zeigen, auf die ich bereits gestoßen bin. Wer ernsthaft mit der Open Watcom IDE arbeiten
möchte, der sollte unbedingt das Handbuch GUITOOL.PDF
lesen (entweder die PDF-Handbücher
mit installieren, oder online auf der Webseite).
Es lohnt sich übrigens in den Kontextmenüs (Rechtsklick) zu stöbern. Da kommt man nicht unbedingt drauf, weil das für Anwendungen unter Windows 3.x unüblich ist...
Über einen Doppelklick auf eine Datei in der Projektansicht (oder über die verschiedenen Menüs) öffnet sich der Quellcode-Editor. Dieser besitzt die üblichen Features inkl. Syntax-Highlighting und Textsuche mit regulären Ausdrücken.
Nach dem Klick auf den "Local Debug"-Button (bzw. "Targets"/"Local Debug" oder Strg+D) wird das Programm
ausgeführt und sofort in der ersten Zeile von WinMain
angehalten. Ich habe noch nicht viel mit
dem Debugger gearbeitet, aber auf den ersten Blick sieht er recht ordentlich aus. Im Screenshot wurde das
Programm beim Verarbeiten von WM_PAINT
angehalten um zu demonstrieren, wie eine Struktur dargestellt
wird.
Sehr hübsch ist auch der Splash-Screen, der bei heutigen Ladezeiten viel zu kurz zu sehen ist.
Der "Spy" ist ein sehr nützliches Hilfsmittel zur Fehlersuche, mit dem die Window Messages, die an ein bestimmtes Fenster gesendet werden, sichtbar gemacht werden können. Um die Ausgabe übersichtlicher zu gestalten können Filter definiert werden, die nur bestimmte Nachrichten oder Gruppen von Nachrichten (z.B. alle Maus- oder Clipboard-Nachrichten) passieren lassen. Außerdem können die Nachrichtenprotokolle gespeichert und somit bequem gegeneinander verglichen werden.
Der Spy kann über "Actions"/"Spy" gestartet werden, oder manuell über WSPY.EXE
.
Open Watcom bietet auch Unterstützung für Sampling und Profiling. Beim Sampling wird das untersuchte Programm in (halbwegs) regelmäßigen Intervallen unterbrochen und die jeweils aktuelle Position im Programmcode aufgezeichnet. Die so entstehenden Sample-Dateien können später mit dem Profiler grafisch dargestellt werden um herauszufinden, wie oft das Programm an welcher Stelle "erwischt" wurde. Mit dieser Information kann darauf geschlossen werden, in welchen Programmteilen die meiste Laufzeit verbracht wird, wo sich also eine Optimierung am ehesten lohnt.