Windows 2 Programmierung mit Microsoft C und passendem SDK

Warum Programmierung auf einem so altem System ? Zum einen der besondere Reiz es auszuprobieren: Bekommt man heute noch die Umgebung Zustande mit der sich einst die Programmierer aller Welt aufgemacht haben um den PC das "DOS" auszutreiben ? Zum anderen um ein Gefühl zu bekommen, mit welchen Hürden diese Leute "gekämpft" haben. Viele Dinge die uns heute vertraut sind wie graphische Entwicklungsumgebungen, integrierte Debugger, Codesensitive Editoren und praktisch unbegrenzte Ressourcen wie Speicherplatz, CPU Performance und bereits vorhandene Bibliotheken, waren im Bereich der PC / XT Ära nicht gegeben. Ich wollte wissen, wann sind Grenzen erreicht und zum anderen meine 30 Jahre ungenutzten Programmierkenntnisse aus dem Studium mal wieder auf die Probe stellen. Schon zu Beginn begannen die Probleme. Doch dazu mehr in den Kapiteln zu den Übungen.

Als erstes muß man sich die Software besorgen. Das ist gar nicht so schwierig wie gedacht. Mittlerweile sind viele WEB Archive Lieferanten alter Original Software. Aber auhc hier gilt nach wie vor das Copyright der Hersteller. Ich werde hier also nur die verwendete Software erwähnen und keinerlei Links zu den Softwarepaketen geben. Um gültige Lizenzen sollte sich jeder selber kümmern. Insbesondere ist das geistige Eigentum, das mit viel Aufwand und Kosten in die Software geflossen ist, durchaus ein Entgelt wert.

Hier also die Liste der benötigten Software

Es ist natürlich reine Geschmackssache wie die Windows Umgebung entsteht. Ich habe mir beide Versionen eingerichtet. Zum einen die "reale" Umgebung auf einem Atari PC3 und zum anderen die virtuelle Umgebung auf einem Emulator am modernen PC (Per "PCem Version 16"). Die virtuelle Umgebung hat den Reiz, dass ich die Software relativ problemlos auf den Rechner bekomme und zudem auch noch genau den Atari PC3 emulieren kann (inkl. ROM Image). Die reale Umgebung dient dann zum echten ausprobieren und um vergleichen zu können, ob die Emulation ordentlich funktioniert.

Der zusätzliche Editor empfiehlt sich für alle, die ein MS-DOS System verwenden (typischerweise aus der Zeit Version 3.x) das mit "EDLIN" befrachtet ist. Es hat natürlcih seinen Reiz auch diese "Leiden" kennen zu lernen. Für meinen Geschmack wollte ich es aber hier nicht übertreiben :-)

Editoren gibt es manigfaltig. Da kann sich jeder etwas suchen im Freeware Bereich. Ich nutze gerne den "terse" Editor : Effizient, kompakt und die Befehle zur Steuerung an Textprozessoren angelehnt (Wordstar und ähnliche). Hier ein paar Eindrücke von der Umgebung

Atari PC3 startet im PCem Aufruf des MAKE Utilities Der Hilfebildschirm des Terse Editors
(Für eine vergrößterte Darstellung die Bilder anklicken)

Natürlich empfiehlt sich auch die richtige Lektüre, inbesondere dann, wenn die praktische Übung sehr lang her ist (wie in meinem Fall). Dazu bietet sich das Buch von Charles Petzold an. Bekannt als Windows Pabst handelt es sich um das erste Werk seiner Reihe der "Windows Programmierung" erschienen im Microsoft Press Verlag. Das Buch bietet viel Hintergrundwissen und praktische Übungen die hier als Vorlage dienen.

Das Buch von Charles Petzold - Vorderseite Das Buch von Charles Petzold - Rückseite Der reale Rechner - Atari PC3
(Für eine vergrößterte Darstellung die Bilder anklicken)

Einrichtung des C-Compilers

Hier nun die Installation der Komponenten auf dem Rechner für die Entwicklungsumgebung. Zuerst geht es an das Einrichten des C-Compilers. Dafür wird die Verzeichnisstruktur angelegt. Ich nutze als Basisverzeichnis C:\MSC40. In diesem Verzeichnis werden drei weitere Unterzeichnisse erzeugt:
Verzeichnisse für den C-Compiler

Diese Verzeichnisse enthalten später die Dateien die der Compiler benötigt. Dazu muss man noch die Umgebungsvariablen sowie den Pfad setzen, damit der Compiler die Dateien später auch findet. Beispielhaft sieht das dann wie folgt aus:

Verzeichnisse für den C-Compiler

Auf die Vorbereitung folgt das Kopieren der notwendigen Dateien. Dazu die Diskette "Compiler" (das ist bei mir die erste Diskette, alle im 360KB Format) einlegen und sich einmal den Inhalt anzeigen lassen (um sicher zu gehen das es die Richtige ist).

Die erste Diskette - Compiler

Die Dateien der Diskette 1 werden komplett in das Verzeichnix C:\MSC40\BIN kopiert.

Kopieren der Dateien der Compiler Diskette

Auf der Diskette 2 sind folgende Dateien:

Inhalt Diskette Utilities

Alle ausführbaren Dateien kommen auch in das Verzeichnis C:\MSC40\BIN.

Kopieren der Dateien der Diskette 2

Diskette 3 einlegen („C INC LIB S“). Diese enthält die Include und Library Dateien (Modell „SMALL“)

Diskette 3 Inhalt C INC LIB S

Von dieser wird die Datei „link.exe“ auch noch in das Verzeichnis „C:\MSC40\BIN kopiert.

Kopieren der Datei Link.exe

Das Verzeichnis C:\MSC40\BIN sollte jetzt wie folgt aussehen:

Inhalt des BIN Verzeichnisses

Von der im Laufwerk befindlichen Diskette werden nun die Header (*.h) Dateien in die entsprechenden Verzeichnisse auf der Festplatte kopiert. Dazu benötigen wir noch ein Unterverzeichnis „SYS“ im „INCLUDE“ Verzeichnis und kopieren dann die Dateien.

Kopieren der Header Dateien

Danach werden noch die *.h Dateien aus dem Hauptverzeichnis der Diskette A: kopiert. Ziel ist das Verzeichnis C:\MSC40\INCLUDE. Die folgende Grafik zeigt den Start des Kopiervorgangs. Es sind insgesamt 26 Dateien.

Kopieren der Header Dateien - Teil 2
Kopieren der Header Dateien - Teil 2

Das Verzeichnis "c:\msc40\include\" enthält nach dem Kopiervorgang 29 Dateien (26 kopierte und das Verzeichnis "SYS")

Inhalt des Verzeichnis INLCUDE

Und im Verzeichnis C:\MSC40\INCLUDE\SYS sind nun folgende Dateien:

Inhalt des Verzeichnis SYS

Von Diskette 3 werden jetzt die LIB Dateien kopiert: SLIBC.LIB, SLIBFP.LIB, EM.LIB und LIBH.LIB

Kopieren von Bibliotheken von Diskette 3

Dies ist das Minimal Setup für das Memory Modell „SMALL“ was als erstes für die Programmierung von Windows 2.03 Programmen genügen wird. Zum C-Compiler benötigen wir noch den Microsoft Macro Assembler : Ich nutze die Version 4.0 die auf einer 360KB Diskette enthalten ist und kopiere die Dateien in ein Unterverzeichnis C:\MASM.

Installation MASM

Installation des Windows Software Development Kits für Windows 2

Das Kit besteht aus 5 Disketten. Das SDK wird über eine Installationsdatei die sich auf der Diskette „UTILITY“ befindet installiert. Die Installation funktioniert (komischerweise) nur über das Laufwerk „A:“. In meinem System ist das 720KB Diskettenlaufwerk „B:“. Somit muss das Laufwerk A: auf Laufwerk B: zeigen. Das erreicht man mit dem DOS Befehl „assign a=b“. Mit der Diskette „UTILITY“ in Laufwerk „B:“ ergibt sich folgende Ausgabe des „DIR“ Befehls nach dem assign Kommando:

Umleiten Laufwerk b auf a mit ASSIGN

Die zweite Diskette ("SOFTDEV1") enthält

Inhalt der Diskette SOFTDEV1

und die dritte Diskette („SOFTDEV“) beinhaltet

Inhalt der Diskette SOFTDEV2

Auf der „UTILITY“ Diskette ist auch eine README.WRI enthalten die noch einige Hinweise für Profis enthält, was während der Installation geschieht.

Die Datei README des SDK

Von der Diskette „UTILITY“ die „INSTALL.EXE“ aufrufen und es erscheint folgender Dialog

Aufrufen von INSTALL

Nach Betätigen der ENTER Taste erscheint der Hinweis, welche Daten man bereithalten muss um die Installation erfolgreich abschließen zu können:

Aufrufen von INSTALL

Mit ENTER startet die Installation. Das Setup Programm fragt als erstes nach dem BIN Verzeichnis. Bei mir im Beispiel ist es C:\MSC40\BIN

Pfad zum BIN Verzeichnis eingeben

Nach erneuter Betätigung der ENTER Taste fragt das Programm nach dem Pfad wo derzeit Windows Version 2 installiert ist auf der Festplatte

Pfad zum WINDOWS Verzeichnis eingeben

Erfreulicherweise übernimmt das SETUP die im ersten Dialog gewählten Basispfad (C:\MSC40) um das INCLUDE Verzeichnis zu wählen

Pfad zum INCLUDE Verzeichnis eingeben

Nach Bestätigen mit der ENTER Taste erfolgt die Abfrage ob ein Microsoft C Compiler genutzt wird. Diese Anfrage mit „Y“ und ENTER beantworten und die entsprechende Version (hier die Version 4.0) wählen durch Drücken der entsprechenden Zahl

Version des C-Compilers auswählen

Nach der Auswahl „1“ erfolgt nun noch die Pfadangabe für die Library Dateien. Der Basispfad aus dem ersten Dialog ist bereits voreingestellt

Pfadangabe zum LIB Verzeichnis

Durch Drücken der ENTER Taste erfolgt die Aufstellung der gewählten Optionen

Installationsübersicht

Mit ENTER erscheint der Dialog mit dem Hinweis die zu prüfen, ob die richtige Diskette UTILITIES eingelegt ist

Prüfung der richtigen Diskette UTILITIES

Nach drücken der ENTER Taste startet der Kopiervorgang

Der Kopiervorgang startet

Durch drücken der ETNER Taste wird die Übersicht des Kopiervorgangs beendet und die Aufforderung zum Diskettenwechsel erscheint.

Diskette DEVELOPMENT FILES einlegen

Diskette „SOFTDEV1“ einlegen und ENTER drücken. Nicht wundern : Es wird nur 1 Datei kopiert. Das geht so schnell das sofort die Aufforderung zum erneuten Wechseln der Diskette erscheint. Diskette „SOFTDEV2“ einlegen und ENTER drücken

Diskette DEVELOPMENT FILES einlegen

Der Dialog wird mit ENTER beendet und es folgt der Dialog mit der Übersicht über die getätigte Installation

Abschließende Übersicht über die Installation

Den Rechner neu starten und noch einmal überprüfen ob die Pfadangaben sowie die Umgebungsvariablen korrekt gesetzt sind in der AUTOEXEC.BAT

Prüfen der AUTOEXEC.BAT

Jetzt kann es losgehen. Viel Spaß !

Zurück zur Homepage
Weiter mit -> Windows 2 Programmierung by Charles Petzold
Nach oben