Turbo Pascal auf dem C 128
Turbo-Pascal gilt als einer der schnellsten und leistungsfähigsten und mit 198 Mark einer der preisgünstigsten Pascal-Compiler überhaupt. Unter CP/M ist Turbo-Pascal nun auch für den C 128 verfügbar.
Nachdruck aus 64'er 11/85, S. 30.
Wer einen C 128 besitzt, der wird sich sicherlich auch schon mit dem CP/M-Modus seines Computers beschäftigt haben. Denn mit CP/M eröffnet sich eine der größten Softwaresammlungen überhaupt. So wird auch das vielgerühmte Turbo-Pascal endlich für den Commodore-Anwender verfügbar.
Was bietet die moderne und weit verbreitete Sprache Pascal dem C 128-Anwender überhaupt? Hier ein kurzer Einblick:
Mit Pascal lernt man eine strukturierte Sprache, bei der man den mitunter recht chaotischen Programmierstil von Basic sehr schnell vergißt. Diese nach dem französischen Mathematiker Blaise Pascal benannte Sprache fordert eine genaue Erfassung des Problems, das programmiert werden soll. Mit einfachem Drauflosprogrammieren wird man daher nicht sehr weit kommen.
Ein besonderes Merkmal ist die Tatsache, daß unübersichtliche GOSUB- und GOTO-Anweisungen mit Zeilennummern wegfallen und durch höhere Sprachstrukturen ersetzt werden.
Pascal ermöglicht eine strukturierte Aufgliederung eines Programms in logische Module (Prozeduren), die alle bestimmte Teilaufgaben des Problems lösen. Alle benutzten Variablen in einem Modul sind, wenn nicht vorher anders definiert, lokal, das heißt, nur in diesem einen Unterprogramm gültig und veränderbar. Innerhalb der einzelnen Prozeduren wie auch im Hauptprogramm herrschen strenge Syntax- und Aufbauregeln, die für logische Struktur und gute Übersicht sorgen.
Nebenbei sei erwähnt, daß Pascal als Compilersprache selbstverständlich sehr viel schneller arbeitet als das interpretative Basic.
Was bringt Turbo-Pascal?
Turbo-Pascal ist stark dem Standard-Pascal von Nikolaus Wirth, dem Schöpfer von Pascal, angepaßt, hat aber noch einige Zusätze und Erweiterungen parat, die das Herz eines jeden Pascal-Fans höher schlagen lassen.
Mit ABSOLUTE kann der Programmierer die normalerweise vom Compiler vergebene absolute Speicheradresse von Variablen festlegen. EXTERNAL dient zum Aufruf von in Assembler geschriebenen und getrennt übersetzten Prozeduren und Funktionen. Mit INLINE kann Maschinensprache direkt in ein Pascal-Programm integriert werden, was bei zeitkritischen Anwendungen von Bedeutung sein kann. Die sehr maschinennahen Operationen SHL und SHR entsprechen den Schiebeoperationen in Assembler.
Das Attribut PACKED wird vom Turbo-Pascal Compiler zwar ohne Murren akzeptiert, hat aber keine Wirkung, da Turbo-Pascal ohnehin schon einen sehr komprimierten Code erzeugt.
Doch damit ist das »Sonderzubehör« noch nicht erschöpft. Turbo-Pascal stellt noch eine Reihe von Standard-Prozeduren, -Funktionen und -Konstanten bereit, die die Programmierung erleichtern und die Möglichkeiten der Problemlösung erweitern.
Die Kreiszahl Pi ist dem Turbo Compiler neben anderen spezifischen Konstanten auch ohne vorherige Definition auf elf Stellen genau bekannt.
Ebenfalls implementiert sind viele Funktionen zur Zahlen- und Variablenverarbeitung. So ist für Turbo-Pascal das Bestimmen einer Zufallszahl mit RANDOMIZE und die komfortable Behandlung von Dateien eine Kleinigkeit.
Der wichtige und oft gebrauchte Datentyp STRING, den man sich in anderen Pascal-Versionen erst selbst definieren muß, ist in Turbo-Pascal bereits standardmäßig vorhanden. So können Strings ganz zwanglos deklariert werden: VAR EINGABE: STRING(80);
NAME: STRING(16);
Derart verschieden dimensionierte Strings sind untereinander dennoch kompatibel, das heißt, sie können untereinander zugewiesen werden, wobei natürlich der eventuell längere Teil des zugewiesenen Strings abgeschnitten wird.
Overlay-Technik löst Speicherplatzprobleme
Wenn ein größeres Pascal-Projekt nicht ganz in den begrenzten Arbeitsspeicher des Computers paßt, dann mag das für andere Programmiersprachen ein ernstes Problem darstellen, nicht so jedoch für Turbo-Pascal. Durch das Attribut OVERLAY können Pascal-Prozeduren oder Funktionen als Overlay-Files compiliert werden. Im Speicher wird dann lediglich Platz für die längste aller Overlay-Prozeduren reserviert. Beim Aufruf einer solchen Prozedur oder Funktion wird das entsprechende Overlay-File nachgeladen und ausgeführt. Insbesondere bei Prozeduren, die nur wenige Male im Verlauf des Programms aufgerufen werden, ist diese Overlay-Technik sehr effektiv.
Eine bemerkenswerte Anzahl von Prozeduren ist zur direkten Manipulation des Speichers vorgesehen. Es lassen sich zum Beispiel ohne Schwierigkeiten Maschinenprogramme oder andere Programmdateien vom Pascalprogramm aus laden und starten. Mit einigen Prozeduren können sogar Routinen aus dem BIOS (Basic Input/Output System) und dem BDOS (Basic Disc Operating System) von CP/M angesprungen und somit das CP/M-Betriebssystem voll ausgenutzt werden.
Mit den gleichnamigen Prozeduren BIOS, BIOSHL, BDOS und BDOSHL lassen sich gezielt Routinen des CP/M-Systems aufrufen und für Pascal-Programme nutzbar machen; für CP/M-Kenner geradezu ein Leckerbissen.
Da Turbo-Pascal unter CP/M läuft, ist es notwendig, zunächst CP/M von der Systemdiskette in Ihren C 128 zu laden. Wie Sie vielleicht bereits bemerkt haben, tut dies Ihr C 128 von selbst, wenn Sie ihn anschalten und die Systemdiskette im Diskettenlaufwerk steckt.
Turbo-Pascal und der C 128
Er »bootet« (lädt und startet) CP/M automatisch. Das ist sowohl mit der 1570/1571-Floppy als auch mit der guten alten 1541 möglich. Von der Verwendung des 1541-Laufwerks kann allerdings nur abgeraten werden. Allein das Hochfahren des CP/M-Systems benötigt fast zwei volle Minuten. Meldet sich nun endlich CP/M auf dem Bildschirm, darf die Diskette mit Turbo-Pascal in das Floppylaufwerk geschoben werden. Wenn Sie noch keine Kopie der Original-Diskette gemacht haben, dann sollten Sie das spätestens an dieser Stelle tun. Wie alle CP/M-Software wird auch Turbo-Pascal ohne unnütze Kopierschutz-Pfuschereien geliefert. Dafür hat jede einzelne Diskette eine Seriennummer. Wenn man sich nach dem Kauf mit einer beigefügten Postkarte unter Angabe der Seriennummer als Benutzer registrieren läßt, hat man die beruhigende Gewißheit, bei Problemen mit dem Produkt nicht allein gelassen zu werden. Bei anderen bekannten Software-Produkten erschöpft sich die »Unterstützung« des Benutzers ja oftmals mit dem Hinweis »Telefonische Anfragen können leider nicht beantwortet werden«.
Nachdem man also jetzt die Originaldiskette sicherheitshalber kopiert hat, kann's endgültig losgehen. Mit DIR listen Sie das Inhaltsverzeichnis der Diskette und können mehrere Files darauf finden.
TURBO.COM ist der eigentliche Compiler, der die gesamte Arbeit leistet. Er benötigt zirka 32 KBytes Speicher. TURBO.OVR wird beim Arbeiten mit Overlay-Prozeduren benötigt. TURBO.MSG enthält alle Compiler-Meldungen im Klartext und kann auf Wunsch von Turbo-Pascal aus geladen werden.
TLIST.COM kann, wenn ein Drucker vorhanden, den Quelltext Ihrer Pascal-Programme auf dem Drucker ausgeben. Ein weiteres File mit dem Namen READ.ME gibt nach dem Auflisten mittels TYPE-Kommando Informationen über die Implementation von Turbo-Pascal.
Daneben gibt es noch einige Beispielprogramme, mit denen man herumexperimentieren kann. Dazu gehört auch ein hervorragendes Tabellenkalkulationsprogramm namens MC, das vollkommen in Turbo-Pascal geschrieben ist.
Turbo Pascal wird einfach durch Eingabe von TURBO gestartet. Nach wenigen (1571) oder vielen (1541) Sekunden schließlich meldet sich Turbo-Pascal und erkundigt sich, ob ausführliche Pascal-Fehlermeldungen erwünscht sind. Antwortet man mit Ja, so wird das File TURBO.MSG, welches etwa 1400 Bytes lang ist, nachgeladen. Wird das unterlassen, dann gibt der Compiler bei etwaigen Fehlermeldungen nur deren Nummer aus.
Es dauert nun nicht mehr lange, bis Turbo-Pascal endgültig sein Hauptmenü (Bild 1) zeigt und dem Programmieren nichts mehr im Wege steht.

Das Arbeiten mit Turbo-Pascal
Turbo-Pascal ist ein Resident-Compiler, das heißt, ist er einmal im Speicher, benötigt er für seine Arbeit keine weiteren Diskettenzugriffe mehr und bleibt solange aktiv, bis Sie Ihren C 128 ausschalten oder in die CP/M-Ebene zurückkehren.
Turbo-Pascal ist sehr bedienerfreundlich und gibt auch dem Anfänger wenig Rätsel auf, so daß man die richtigen Handgriffe sehr schnell beherrschen lernt. Aus dem eben erwähnten Menü kann man alle wichtigen Funktionen auf Tastendruck abrufen.
Der für den Programmierer wichtigste Programmteil dürfte wohl der Eingabeeditor sein, der mit »E« gestartet wird. Haben Sie noch kein Pascal-Quellprogramm im Speicher, muß jetzt zunächst der Name des Files eingegeben werden, unter dem es nachher abgespeichert werden kann.
Narrensicher wie Turbo-Pascal ist, sieht es sofort nach, ob ein derartiges File schon einmal auf die Diskette geschrieben wurde. Falls das so ist, wird es eingelesen, und man kann dieses File im Editor bearbeiten. Wenn nicht, richtet der Compiler ein neues File ein. Jedes Programm oder File in CP/M besitzt eine Art Kennung am Ende des Filenamens, die durch einen Punkt getrennt so etwas wie eine Identifikation darstellt. Turbo-Pascal hängt, wenn nur der Dateiname eingegeben wird, das Kürzel PAS an, um dem Benutzer zu kennzeichnen, daß es sich bei diesem File um eine Turbo-Pascal Quelldatei handelt. Will man das nicht, kann man eine eigene Kennung benutzen.
Professioneller Texteditor
Wem der Name »Wordstar« ein Begriff ist und wer eventuell schon damit gearbeitet hat, der darf sich freuen. Die Kommandos des Pascal-Editors sind mit den entsprechenden Wordstar-Befehlen identisch und haben, wenn nicht anders vereinbart, auch die gleiche Tastenbelegung. Wer das Wordstar-Textverarbeitungssystem noch nicht kennt, wird sich dann wohl erst einmal mit dem recht ausführlichen Turbo-Pascal Handbuch, Stichwort Editor, vertraut machen müssen.
Doch obwohl die Fülle der Kommandos auf den ersten Blick überwältigend ist (selbst Block-, Such- und Ersetz-Kommandos sind vorhanden), gestaltet sich das Arbeiten mit dem Turbo-Pascal-Editor doch sehr einfach und angenehm.
Der Cursor wird neben den Wordstar-üblichen Control-Kommandos auch mit den vier Cursortasten bewegt, die sich gleich links neben den Funktionstasten des C 128 befinden. Auch die INST/DEL Taste hat ihre Funktion behalten, so daß man also auch ohne nähere Kenntnisse der einzelnen Editor-Kommandos gleich mit dem Programmieren beginnen kann.
Interessant dürfte sein, daß beim Druck der Return-Taste der Cursor nicht an den ganz linken Rand der neuen Zeile springt. Stattdessen plaziert er sich immer unter dem ersten Wort der zuletzt eingegebenen Zeile. Das Programmieren mit den für Pascal so wichtigen Einrückungen von Zeilen wird durch diese kleine Feinheit zum Kinderspiel.
Es lassen sich bis zu 126 Zeichen in einer Zeile unterbringen, wobei der Editor den Bildschirm bei der Eingabe von mehr als 80 Zeichen seitwärts scrollen läßt.
Hat man sein Programm eingegeben, kann man den Editor (mit Control KD) wieder verlassen und das frisch geschriebene Programm sofort übersetzen und ausprobieren.
Über seinen Quelltext muß man sich dabei nicht groß sorgen: Turbo-Pascal geht stets auf Nummer sicher und fragt immer dann, wenn die Gefahr besteht, den momentan im Speicher befindlichen Quelltext zu verlieren, ob das aktuelle Quellprogramm abgespeichert werden soll. Sei es beim Verlassen des Compilers, oder wenn man ein neues Programm bearbeiten will, Turbo-Pascal erinnert den Anwender an das Sichern des Quelltextes, es sei denn, man hätte dies bereits getan.
Der Turbo Compiler
Der Turbo Compiler besitzt mehrere Funktionen zum Compilieren eines Programms. Mit dem O-Kommando des Hauptmenüs läßt sich ein Untermenü mit den möglichen Compiler-Optionen aufrufen, die das Übersetzen von Quelltexten auf verschiedene Art ermöglichen. Je nachdem, welche Option man wählt, wird der Compiler bei Aufruf entsprechend arbeiten.
Turbo-Pascal erlaubt es auf Wunsch, das im Moment im Speicher befindliche Quellprogramm zu compilieren und auch direkt wieder im Speicher abzulegen. Das so erzeugte Maschinensprache-Programm wird dann vom Hauptmenü aus mit »R« gestartet. So kann ein sofortiger Test des eben geschriebenen Programms erfolgen.
Der Compiler kann aber auch ein Quellfile von Diskette laden und compilieren, um das Compilat (das übersetzte Programm) dann als .COM-File wieder auf Diskette zu speichern. Dieses File ist später als Programmfile von CP/M aus, ohne Hilfe von Turbo-Pascal, lade- und startfähig, somit also ein vollkommen eigenständiges Programm.
Schließlich kann der Compiler auch sogenannte Chain-Dateien (Kennung .CHN) verarbeiten. Diese Übersetzungen haben keine eigenen Pascal-Bibliotheksroutinen und sind somit auch nicht einzeln für sich lauffähig. Sie sind dafür gedacht, von anderen Pascal-Programmen nachgeladen zu werden.
Der letzte Untermenüpunkt mit der Bezeichnung »Find run-time error« ist genau das, was sein Name verspricht: ein gutes Hilfsmittel zum Aufspüren von Laufzeitfehlern. Laufzeitfehler sind Fehler, die der Compiler nicht erkennen kann, da sie erst beim Ablauf des compilierten Programms auftreten. In diesem Falle unterbricht das Programm und gibt eine entsprechende Fehlermeldung und die Speicheradresse aus, an der der Fehler aufgetreten ist.
Nun besteht ein Compilat nicht mehr aus den Pascalbefehlen, die man im Quelltext eingetippt hat, sondern aus Maschinencode. Die angezeigte Stelle eines Fehlers ist deshalb auch eine hexadezimale Adresse. Dank der eben angesprochenen Option des Turbo-Pascal Compilers kann man aber mit dieser Adresse den Lauffehler im Quellprogramm jedoch bequem wiederfinden. Dazu muß das Quellprogramm noch einmal von Turbo-Pascal geladen werden. Ein Aufruf der oben genannten Find-Option und die Angabe der besagten Hexadresse genügen, und der Editor führt Sie automatisch an die Fehlerquelle. Eine praktische Sache.
Doch bevor ein Laufzeitfehler auftreten kann (man will es nicht hoffen), muß man sein Quellprogramm selbstverständlich erst compilieren lassen.
Mit der Wahl »C« im Hauptmenü startet der Compiler und compiliert je nach eingestellter Compiler-Option aus eben besprochenem Untermenü. Die Fehlerbehandlung während der Übersetzung geschieht bei Turbo-Pascal auf sehr interessante und effektive Weise. Hat der Compiler einen Fehler gefunden, den er nicht akzeptieren kann, läßt er eine entsprechende Fehlermeldung auf dem Bildschirm erscheinen. Falls man die Fehlermeldungen beim Start von Turbo-Pascal nicht geladen hat, wird nur die Fehlernummer ausgegeben, deren Bedeutung im Handbuch nachzulesen ist. Der Übersetzungsvorgang wird gestoppt und ein Druck auf die Escape-Taste (ganz links oben auf der Tastatur) wird erwartet.
Folgt man dieser Aufforderung, startet der Editor automatisch und postiert den Cursor ähnlich wie bei der Laufzeitfehlerbehandlung an die fehlerhafte Programmstelle. Eine überaus effektive Fehlersuche ist damit gewährleistet, die man bald nicht mehr missen möchte.
Schnell, schneller, turbo...
Eine Auflistung des Programmes während der Compilation ist nicht möglich. Sie würde die Übersetzung auch nur unnötig verlangsamen.
Der Name »TURBO« hält, was er beim Lesen verspricht. Turbo-Pascal erledigt seine Aufgabe in Windeseile und erzeugt ein Compilat mit ebensolchen Eigenschaften.
Wenn ein C 64-Besitzer diese Geschwindigkeiten bestaunt, sollte er aber selbstverständlich daran denken, daß die Taktfrequenz des Z80-Prozessors im C 128 doppelt so hoch wie die des 6510 ist und der Computer somit auch um einiges schneller arbeiten kann. Leider ist sie aber (effektiv) wiederum nur wenig mehr als halb so hoch wie bei anderen Z80-Computern, was bedeutet, daß Turbo-Pascal auf anderen CP/M-Systemen noch schneller ist.
Trotzdem muß man sagen, daß Turbo-Pascal der schnellste derzeit für den C 128 verfügbare Pascal-Compiler ist.
Um eine Vorstellung davon zu bekommen, welche Geschwindigkeiten Turbo-Pascal bei der Arbeit entwickelt, sei hier zum Abschluß ein kleiner Geschwindigkeitstest aufgeführt.
Die Konkurrenten sind Oxford-Pascal und Profi-Pascal, die beide für den C 64 erhältlich sind und natürlich Turbo-Pascal.
Es ist selbstverständlich klar, daß dies ein Rennen unter ungleichen Voraussetzungen ist, da man Programme für verschiedene Prozessoren nur schlecht miteinander vergleichen kann. Schon gar nicht, wenn es sich um einen Kampf zwischen dem 6510 und dem durch 16-Bit-Befehle viel leistungstärkeren Z80-Prozessor handelt. Dieser Vergleichstest soll auch nur zeigen, was mit einem schnellen Computersystem und einem wirklich guten Programm wie Turbo-Pascal geleistet werden kann. Auch für den C 64-Anwender ist das sicherlich mal ganz interessant; für den C 128-Benutzer wohl um so mehr, da ihn das vielleicht dazu bringt, das CP/M-System seines Computers etwas näher zu betrachten.
Die Aufgabe war für alle drei Pascal-Compiler die gleiche. Es mußte eine Integer-Variable von 0 bis 2000 hochgezählt und jede davon auf dem Bildschirm angegeben werden. Ein anderer Versuch wurde ohne Bildschirmausgabe gemacht. Außerdem wurde die Übersetzungszeit für jeden Compiler gemessen. Das Testprogramm ist in Bild 2 abgedruckt. Die Ergebnisse (Bild 3) zeigen Turbo-Pascal in nahezu allen Bereichen als glänzenden Sieger. Nur mit der Ausgabe auf dem Bildschirm haperte es ein bißchen. Da konnte ihm das wirklich schnelle Profi-Pascal den ersten Platz streitig machen, was aber weniger an Turbo-Pascal als an der sehr umständlichen und langsamen Bildschirmansteuerung im CP/M des Commodore 128 liegt. Betrachtet man aber die übrigen Zeiten, so wird es klar, daß Turbo-Pascal eindeutig der schnellste Compiler ist. Die Arbeitsgeschwindigkeit von Turbo-Pascal zeigt, was ein Z80-Prozessor alles vermag. Ein kleiner Anstoß vielleicht für manchen Interessierten, den Z80 näher kennenlernen zu wollen. Ganz sicher aber ein gutes Argument für die Qualität von Turbo-Pascal.
(M.Thomas/ev)Turbo-Pascal ist ein eingetragenes Warenzeichen von Borland International. Vertrieb in Deutschland: Heimsoeth Software, Fraunhoferstr. 13, 8000 München 5, Preis 198 Mark. Markt & Technik Verlag AG, Hans-Pinsel-Str. 2, 8013 Haar bei München.
| Ausführung | |||
|---|---|---|---|
| Compilation | mit Ausgabe | ohne Ausgabe | |
| Oxford-Pascal | 3.7 sec | 34.7 sec | 2.3 sec |
| Profi-Pascal | 24.8 sec (Disk) | 25.1 sec | 1.0 sec |
| Turbo-Pascal | 0.5 sec | 30.6 sec | 0.4 sec |