Das DOS-Museum

Mit PCs und dem Betriebssystem DOS kam ich erstmals um 1987/1988 herum in der Uni Düsseldorf in Berührung. Meinen eigenen PC kaufte ich mir allerdings erst Ende 1989 zu Beginn meines Studiums: Einen "AT" der Marke "Highscreen" von Vobis für genau 2.274 DM (keine Ahnung, warum ich mich nach fast 30 Jahren noch so genau an den Kaufpreis erinnere...).


Ich an meinem Highscreen-AT (Foto ca. von 1991)


Mein Highscreen-AT (Foto vom Juni 1996)

Mein erster PC hatte eine 80286er-CPU mit 15 MHz Taktfrequenz, 512 KB Hauptspeicher (später aufgerüstet auf 1 MB), ein 5¼-Zoll-Floppylaufwerk (später noch ergänzt durch ein zusätzliches 3½-Zoll-Diskettenlaufwerk) und eine lahme und laute 20-MB-Festplatte (die ich später durch eine 80-MB-Platte ersetzte). Als Bildschirm diente ein Monochrom-Monitor, der an eine sogenannte "Hercules"-Grafikkarte angeschlossen war. Diesen habe ich später durch einen Farb-Monitor (VGA-Auflösung 640×480, 16 Farben) ersetzt.

Meine ersten Programmier-Versuche auf dem PC unternahm ich in BASIC, genauer gesagt mit GW-BASIC von Microsoft, das bei MS-DOS standardmäßig mit dabei war. Zwar hatte mein Vobis-PC kein MS-DOS, sondern nur den "Klon" DR-DOS, aber irgendwie war ich an eine MS-DOS-3.2-Boot-Diskette gekommen, auf der GWBASIC.EXE enthalten war, das auch unter DR-DOS lief. Genau wie das C64-BASIC verwendete GW-BASIC Zeilennummern als Sprungziele. Als C64-Umsteiger fühlte ich mich daher bei GW-BASIC gleich "heimisch". Ich bin dann aber ziemlich schnell – wie bereits beim C64 – zu Assembler übergegangen, wobei ich hier den A86/D86 (damals Shareware) von Eric Isaacson benuzte. Erst relativ spät habe ich angefangen, in C zu programmieren, wofür ich mir eine verbilligte Studentenversion von "Turbo C++ 1.01" (Profipaket) von Borland kaufte.

Innerhalb von 7 bis 8 Jahren sind so auf dem DOS-PC eine Unmenge an kleineren und auch einige größere "Progrämmchen" entstanden, von denen ich hier spaßeshalber mal einige ausstelle. MemPatch habe ich damals als Shareware vermarktet und bin sogar so um die 50 Exemplare losgeworden. Der A86-Disassembler R86 geistert sogar jetzt noch – nach 12 Jahren – durchs Netz... (Stand: 2003; inzwischen, 2021, sind es schon 30 Jahre.😮)

Die nachfolgenden Programme sind alle gezippt. Der Sourcecode liegt jeweils dabei – entweder im gleichen Pfad oder im Unterverzeichnis "SRC". Wenn nicht anders angegeben, wurde als Assembler der A86 verwendet, und als C-Compiler Turbo C++. Die Sourcecodes der DOS-Programme können ohne Einschränkungen frei verwendet werden.

Weitere DOS-Programme finden sich im Bereich Fraktalgrafik.

Audio

AuDig

Einfacher Audio-Editor zum manuellen Schneiden und Abspeichern einzelner Segmente (z.B. Phoneme) aus einem Audiosignal. Die Segmente können in zufälliger Reihenfolge wiedergegeben werden. Außerdem gibt es die Effekte "Umdrehen" und "Echo" sowie einen Hoch- und einen Tiefpaß-Filter. Zur Sound-Ausgabe verwendet AuDig den DOS-Digitizer – so eine Art Soundkarten-Ersatz.

Programmiersprachen: C, Assembler (TASM 2.5)
Entwickelt: 1991-1997

[Download]

Sprich

Kann Textdateien mit einer speziellen Lautschrift "vorlesen" oder die eingetippte Lautschrift direkt "sprechen". Für das Editieren der Phoneme wurde AuDig (s.o.) verwendet. Auch Sprich hat eine Zufalls-Wiedergabefunktion und verwendet den DOS-Digitizer zur Sound-Ausgabe.

Hier ein Soundbeispiel!

Programmiersprachen: C, Assembler (TASM 2.5)
Entwickelt: 1993

[Download]

Update: SPRICH wurde 2017 noch einmal überarbeitet, so dass es nun auch unter Windows sowie (mit eingeschränkter Funktionalität) auch direkt im Browser lauffähig ist:

Fun

BS2000-Simulator

Ja, da kommt richtiges Großrechner-Feeling auf: Gerade hat man ein schwieriges COBOL-Programm so gut wie fertiggestellt und möchte es nur noch eben schnell abspeichern, da ist mal wieder die Standleitung weg, und in der Statuszeile des Grün-Monitors blinken die Wörter "POLL", "SAN" und "DUE" munter vor sich hin. Wenn es dann eine halbe Stunde später wieder geht, darf man die letzten Seiten des Programms noch einmal tippen... das übt! So jedenfalls habe ich es während meiner "Organisationsprogrammierer"-Schulung bei Siemens-Nixdorf 1990-1991 nicht selten erlebt. :-)

Geschrieben 1991 in A86-Assembler.

[Download]

Tetris

Die erste Version dieses Spiels ist 1991 als C-"Übungsaufgabe" während meiner OrgProg-Schulung auf einer SINIX-Kiste entstanden (ich glaube, das Ding hieß "MX300", es war jedenfalls so groß wie ein Kühlschrank, aber nicht schneller als ein 486er). Für die Bildschirm- und Tastatur-I/O habe ich die CURSES-Bibliothek verwendet; das Ganze lief auf einem seriellen Schwarzweiß-Terminal und nicht gerade sehr flott. Später habe ich daraus eine DOS-Version gemacht. – Programmiersprache (natürlich) C.

Geschrieben 1991-1993 in C.

[Download]

Fly

Ein Relikt aus meiner Vor-Internet-Zeit: Die Fluggebiete-Datenbank für Gleitschirmflieger. Man konnte Fluggebiete in Deutschland, Österreich und der Schweiz erfassen und dann so schöne Abfragen machen wie: Welche Fluggebiete mit Startrichtung Ost bis Südost liegen im Umkreis von 75 km um diesen oder jenen Ort? Eine Karte zeigte dann noch die ungefähre Lage des Fluggebietes an.

Programmiersprache(n): Clipper
Entwickelt: 1995

[Download]

Utilities

FileManager

Für diesen Dateimanager hat mir das Programm ERGO vom DMV-Verlag, das zu dem Softwarepaket meines 1989 bei Vobis gekauften Highscreen-Rechners gehörte, als Vorbild gedient. Er enthält zudem einen TSR-Manager, einen Hex-Editor und einen Text-Editor mit Blockgrafik-Malfunktion (nach dem Vorbild der Textverarbeitung ConText, ebenfalls Bestandteil des Softwarepakets). Aufgrund seiner geringen Größe von nur 32 KB lädt er auch sehr schnell von Diskette.

Geschrieben 1991 in A86-Assembler. Für die Oberfläche wurde eine abgespeckte Version der SAA-Window-Toolbox (s.u.) verwendet.

[Download]

Image

Dieses nette, keine 2 KB kleine Kommandozeilen-Tool kann von Disketten (auch Bootdisketten) Image-Dateien erstellen und diese später wieder auf Disketten zurückschreiben. Habe ich früher oft benutzt, um Sicherungskopien von Konfigurationsdisketten zu erstellen, oder um schnell mal eine Ghost-Bootdisk per E-Mail zu versenden.

Geschrieben ca. 1993 in A86-Assembler.

[Download]

Scan

Such-Utility (ähnlich find bei UNIX), mit dem sich Dateien nach Name, Inhalt, Datum und Zeit durchsuchen lassen. Mit den gefundenen Dateien konnten dann beliebige DOS-Befehle ausgeführt werden. Das Konstrukt scan c: /r /d ae 20.3.2002 /a-a /s "b?on "/j /i /c if not exist @.@ copy @\@.@ d: kopiert z.B. alle Dateien im aktuellen und in allen darunterliegenden Verzeichnissen von Laufwerk C:, die seit dem 20.3.2002 geändert oder erstellt wurden, bei denen jedoch das Archiv-Attribut gelöscht ist und die die Zeichenfolge "b?on" (2. Zeichen und Groß-/Kleinschreibung sind egal) enthalten, die jedoch im aktuellen Verzeichnis nicht schon existieren, nach Laufwerk D:. Funktioniert leider nicht mit langen Dateinamen – aber ist Jahr-2000-kompatibel! *g*

Geschrieben 1990-1992 in A86-Assembler.

[Download]

Programmier-Tools

BrkPoint

Tool zum Debuggen von Assembler-Programmen. Installiert sich "resident" im Speicher und wartet im Hintergrund, bis das zu testende Programm auf einen Breakpoint (Int 3) läuft. Zeigt dann die Inhalte der Register und Flags sowie den Stack des unterbrochenen Programms an. Danach besteht die Möglichkeit, das zu testende Programm entweder abzubrechen oder fortzusetzen.

Geschrieben 1990 in A86-Assembler.

[Download]

IntPar

Dieses speicherresidente Utility dient zum Überwachen (fast) beliebiger Interrupts und der Registerinhalte vor Eintritt in den Interrupthandler mit INT und nach Verlassen durch IRET oder RETF zur Laufzeit beliebiger Programme. Zeigt die aktuellen Registerinhalte und die Prozessorflags des unterbrochenen Programms in einem PopUp-Fenster an und ermöglicht das Untersuchen des Inhalts des Hauptspeichers mit einem Hex-/ASCII-Viewer.

Geschrieben 1991-1992 in A86-Assembler.

[Download]

KeyCheck

Mit diesem Tool können die Codes der gedrückten Tasten ermittelt werden. Nützlich, wenn man in C oder Assembler eine Tastaturbehandlungsroutine schreibt und gerade keine Tastaturcode-Tabelle zur Hand hat...

Geschrieben 1992 in A86-Assembler.

[Download]

Make86

Make-Utility für Assembler A86. Anhand von Direktiven im Quelltext können mehrere Quelltext-Teile so miteinander verknüpft werden, daß sie automatisch in der angegebenen Reihenfolge assembliert werden. Weiterhin kann mit Include-Dateien gearbeitet werden (ähnlich wie in C). A86 wird nur dann aufgerufen, wenn sich Quelltext-Teile geändert haben oder wenn noch keine COM- oder OBJ-Datei existiert.

Geschrieben 1991-1992 in A86-Assembler.

[Download]

MAP2SYM

Konvertierungsprogramm, das aus einer MAP-Datei von TLINK oder LINK eine SYM-Datei für dem zum Assembler A86 gehörenden Debugger D86 erzeugt. Nur so war es möglich, größere Programme, die aus mehreren OBJ-Modulen bestehen, zu debuggen. Das Utility MAPD86 von Eric Isaacson, das eigentlich genau denselben Zweck erfüllen sollte, funktioniert(e) leider nicht richtig.

Geschrieben 1992 in A86-Assembler.

[Download]

MemPatch

Ein Tool für Bitfummler, mit dem alle internen Speicherbereiche des DOS-PC erforscht und manipuliert werden konnten. Mit ca. 18.000 Zeilen mein bisher umfangreichstes Assembler-Programm. Für die Oberfläche mit Menüs, Fenstern und Mausbedienung wurde die SAA-Window-Toolbox (s.u.) verwendet. Die erste Version entstand 1990, und bis in die Mitte der 90er habe ich ca. 50 Shareware-Lizenzen verkauft, was vielleicht auch auf die Berichte in einigen Zeitschriften zurückzuführen ist.

Geschrieben 1990-1996 in A86-Assembler.

[Download]

R86

Ein Reassembler (bzw. eigentlich Disassembler), der aus ausführbaren .COM-Dateien A86-kompatiblen Assembler-Quelltext erzeugt. Ein integrierter Editor ermöglicht die Bestimmung der Code- und Datenbereiche des zu disassemblierenden Programms. Ganz nützlich fürs Reverse-Engineering, um zu sehen, wie andere Leute so in Assembler programmieren, oder wie der damals über "infizierte" Disketten verbreitete 1704- oder der FORM-Virus so funktionierte (ja, da wurden Viren noch richtig in Assember programmiert)...

Geschrieben 1991 in C.

[Download]

SysCall

Ermöglicht den Aufruf beliebiger Interrupts von der DOS-Kommandozeile aus. Dazu können Register und Flags zuvor mit den erforderlichen Werten initialisiert werden. Nach dem Aufruf werden die Inhalte der Register und Flags ausgegeben. Ein beliebiger Registerinhalt kann als Exit-Code zurückgegeben werden, der dann z.B. in Batchdateien mittels ERRORLEVEL abgefragt werden kann.

Geschrieben 1990-1991 in A86-Assembler.

[Download]

Programm-Libraries

A86-Library

Diese Programmbibliothek für Assembler enthält über 120 Funktionen zur Bildschirm- und Tastatur-Ein- und Ausgabe, zur Zeichen- und Stringbearbeitung, zum Rechnen mit Binär-, Dezimal- und Hexadezimalzahlen, Erzeugung von Zufallszahlen, zum Auswerten der Kommandozeile, zum rekursiven Durchsuchen von Verzeichnissen, verschiedene DOS-Systemfunktionen, und noch so einiges mehr, was sich im Laufe der Praxis so angesammelt hat, das man immer wieder braucht. Die Quelltext-Teile können entweder direkt in den A86-Sourcecode eingefügt werden, oder es kann davon eine LIB-Datei erzeugt werden, die dann auch mit anderen Assemblern verwendet werden kann.

Entstanden 1990-1992.

[Download]

CURSES-Ersatz

C-Programme, die ursprünglich für UNIX geschrieben wurden und für die Ein- und Ausgabe über Bildschirm- und Tastatur- nur einige der gebräuchlichsten Curses-Funktionen benutzen, können mit etwas Glück auch unter DOS zum Laufen gebracht werden, wenn diese Headerdatei eingebunden wird.

Entstanden ab 1991.

[Download]

Einfaches Menü-System für C-Programme

Die Headerdatei MNU.H enthält Funktionen, um C-Programme mit einer einfachen Menüoberfläche auszustatten. Die Titel der einzelnen Menüpunkte werden dabei nebeneinander in der obersten Bildschirmzeile ausgegeben und lassen sich mit den Cursortasten oder durch Eingabe des hervorgehobenen Buchstabens auswählen. In der zweiten Bildschirmzeile wird zu jedem ausgewählten Menüpunkt ein Hinweistext ausgegeben.

Geschrieben 1992 in C.

[Download]

Es existiert noch eine weitere Version, die ursprünglich mal für UNIX und Curses geschrieben wurde und zusätzlich über ein kontext-sensitives Hilfe-System verfügt.

[Download]

SAA-Window-Toolbox für Assembler

Mit der SAA-Toolbox ist es möglich, Assemblerprogramme mit einer komfortablen Menüoberfläche zu versehen, die sowohl über Tastatur als auch mit der Maus bedient werden kann. Neben einer kompletten Pulldown-Menü-Verwaltung in Anlehnung an den SAA-Standard und verschiedenen Popup-Windows zur Datei- und Laufwerk-Auswahl, Eingabe von Zeichenketten, Ausgabe von beliebigen Texten sowie zur Einstellung der Farben werden noch einige häufig benötigte Sonderfunktionen zur Verfügung gestellt.

Geschrieben 1990-1992 in A86-Assembler.

[Download]


Homepage > DOS-Museum