Die Turbo-Pascal-Story
Das Super-Pascal aus der Welt der CP/M- und MS-DOS-Personal Computer ist jetzt auch für den C 64 erhältlich — das CP/M-Modul macht’s möglich.
Um Turbo Pascal auf dem C 64 nutzen zu können, sind Floppy-Laufwerk und CP/M-Modul notwendige Voraussetzungen. Zum optimalen Betrieb sollten Grundkenntnisse von CP/M-80, der Sprache Pascal und etwas Z80-Maschinensprache hinzukommen. Benutzt man einen Drucker mit Centronics-Schnittstelle, sollte man das Betriebssystem des C 64 und 6502 Maschinensprache kennen, denn mit den Interfaces, die Treibersoftware im Bereich C000 — CFFF16 bereithalten, könnte man Überraschungen erleben.
Die Lieferung
Die Sendung von Heimsoeth Software, München, zum Preis von 225,72 Mark, enthält die Diskette und ein Handbuch in englischer Sprache von etwa 300 Seiten Umfang. Das Handbuch versteht sich nicht als Einführung in Pascal, sondern beschreibt in drei Teilen den Gebrauch des Turbo Systems, die Besonderheiten für einzelne Betriebssysteme wie CP/M-80 und 86 sowie MS/PC-DOS, die Sprachelemente (Syntax) von Turbo Pascal. Den Schluß bilden recht brauchbare Übersichten zum Pascal, zum Compiler und den Fehlermeldungen. Die Diskette enthält die Files
- TURBO.COM, also den eigentlichen Pascal-Compiler, der laut STAT-Meldung etwa 31 KByte belegt,
- TURBO.OVR, eine Routine, die Programmoverlaying im CP/M ermöglicht. Damit können auch Programme, die mehr als den zur Verfügung stehenden Speicherplatz (zwischen 6 100 und 11 600 Byte je nach Konfiguration) benötigen, gefahren werden.
- TURBO.MSG ist ein Textfile, das die 100 Fehlermeldungen im englischen Wortlaut enthält. TURBO.MSG kann beim Initialisieren wahlweise hinzugeladen werden und belegt dann etwa 1 400 Byte. Wer will, kann sich alle Fehlermeldungen ins Deutsche umschreiben. Ohne TURBO.MSG werden nur die Nummern der Fehler nach dem Compilieren angegeben. Ihre Bedeutung schaut man dann im Handbuch nach. Leider habe ich noch keine Möglichkeit gefunden, TURBO.MSG zwischenzeitlich nachzuladen. Man muß TURBO.COM erst mit Q verlassen und dann mit »TURBO« neu laden.
- TLIST.COM ist eine Druckerroutine, die es nicht nur ermöglicht, Pascal-Quellcode mit vorgestellten Zeilennummern auszudrucken, sondern auch Pascal-Schlüsselwörter durch Unterstreichen zu markieren.
- READ.ME gibt eine Erklärung darüber, warum Run-Time-Fehler in Overlay-Programmen nur schwer zu lokalisieren sind, falls die Overlay-Area mehr als ein Programm enthält. Die beiden Programme TINST.COM und CALC.PAS, die man auf Lieferungen für andere CP/M-Versionen (zum Beispiel Osborne und TA) findet, waren nicht vorhanden. Ich erkläre mir dies damit, daß das Demoprogramm zur Tabellenkalkulation nicht in den Speicher des C 64 paßt und das Tastatur-Installationsprogramm sich für die auf den C 64 zugeschnittene Version von selbst erübrigt.
Starten des Systems
Wer liest sich, wenn er Software erhält, schon ein ganzes Handbuch durch, um danach erst in die Praxis einzusteigen? Also schob ich nach einem Blick auf die ersten paar Seiten des Handbuches mein CP/M-Modul ein, legte die CP/M-Arbeitsdiskette ins Laufwerk und zählte nach »LOAD "CPM", 8« und »RUN« die 28 Sternchen, bis sich CP/M meldet. Dies dauert in der Regel etwa eine Minute, kann aber auch mal ins Auge gehen, je nachdem wie sorgfältig das Modul eingesteckt wird. Nach Meldung des CP/M stieg die Spannung, denn ich legte die Turbo-Diskette ein und tippte, da Turbo Pascal als CP/M-Kommando gestartet wird, einfach TURBO ein. Mit Freude stellte ich fest, daß sich das Laufwerk in Bewegung setzte. Meine Freude wurde etwas getrübt, dauerte der Ladevorgang doch fast 2 Minuten (genauer 106 Sekunden). Damit verbraucht das Hochfahren des Systems also insgesamt fast 3 Minuten. Dies liegt jedoch nicht am CP/M, sondern am langsamen Arbeiten des 1541-Laufwerks. Immerhin wurde mein Warten mit einer recht klaren Turbo-Meldung begrüßt, wobei die gelbe Schrift auf schwarzem Hintergrund sich wohltuend gegenüber dem Commodore-Blau abhob.
Nun mußte wieder das Handbuch zu Rate gezogen werden, denn mit einer simplen Meldung wollte ich mich nicht begnügen. Zumindest ein kleines Programm sollte laufen. Also wurde nach Eingabe von »N« (keine Fehlermeldung im Wortlaut) mit »W« eine Arbeitsdatei (Workfile) angelegt. Dabei muß man zunächst den Namen angeben. Will man eine bereits existierende Datei bearbeiten, so wird diese jetzt geladen. »DIR« zeigt das Inhaltsverzeichnis der Diskette. Da noch kein .PAS-File existierte, erklärte die Meldung »NEW FILE«, daß nun eine neue Arbeitsdatei eingerichtet wird. Nach Eingabe von »E« meldete sich ein auf den ersten Blick recht komfortabler Editor, der eine Teilmenge der Wordstar-Befehle bereithält und 80 Zeichen pro Zeile unterstützt. Leider wurde die Repeat-Funktion für die Corsorbewegungen vergessen. Was mich zuerst sehr erschreckte, als ich daran ging zwei Tippfehler meines ersten eingetippten Programms auszumerzen, war die Tatsache, daß der Cursor alle Zeichen löschte, die er überstrich. War damit meine ganze Eingabe umsonst? Konnte man mit Turbo auf dem C 64 gar nicht arbeiten? Verwundert hätte mich das nicht, denn bisher findet man ja nur ganz wenig CP/M-Software, die an das eigenwillige CP/M des C 64 zufriedenstellend angepaßt ist. Im ersten Moment war ich ratlos und las wieder Seite um Seite im Handbuch. Doch dies ist allgemein gehalten und kann, will es nicht zu einer Enzyklopädie ausarten, nicht auf alle CP/M-fähigen Computer eingehen.
Also raus aus dem Editor mit CTRL K, CTRL D und mit E wieder hinein, um mein Glück aufs Neue zu probieren. Aber, welche Freude! Da stand mein Programm TEST1, so wie ich es eingegeben hatte.
Nun war die Sache wohl klar: Beim Schreiben des Editors hat man vermutlich vergessen, die Routine BASIN des C 64-Betriebssystems sorgfältig umzuschreiben. Deshalb wird an der Stelle, wo die Farbinformation des Zeichens unter dem Cursor ins Farb-RAM geschrieben wird (also im Bereich $E45F-$EB7F), genau dies einfach vergessen.
Da ich eine sehr »frische« Disk der Version 2.0 A vorliegen hatte, dürfte dieser vom Prinzip her kleine, in der Wirkung aber störende Fehler, in nächster Zeit behoben sein. Das dem so ist, sicherte auch die Münchener Vertriebsfirma telefonisch zu. Eine Weile wird man dennoch warten müssen, denn Kalifornien ist immer noch weit und bis die Eingaben aus der »Provinz BRD« berücksichtigt werden, wird einige Zeit ins Land gegangen sein.
Turbo Pascal lehnt sich eng an den durch Jensen und Wirth festgelegten Pascal-Standard an. Folgende Unterschiede, die wohl nur den eingefleischten »Wirth Pascaler« tiefer berühren werden, sind zu vermerken:
- Der Programmkopf ist optional gestaltbar.
- Im Deklarationsteil muß die Reihenfolge und Anzahl der Vereinbarungen nicht sklavisch eingehalten werden.
- Als Label können Zahlen und Namen dienen.
- Die verpönte GOTO-Anweisung darf nur im laufenden Block verwendet werden.
- Das »Packen« insgesamt fehlt, da der Turbo-Compiler ohnehin einen sehr dichten Code generiert. Während PACKED nichts bewirkt, rufen die Prozeduren PACK und UNPACK eine Fehlermeldung hervor.
- Wie in vielen anderen Versionen sind auch Funktionen und Prozeduren als Parameter nicht zugelassen.
Hält nun der Name Turbo das, was er verspricht? Diese Frage kann man in zweierlei Hinsicht guten Gewissens bejahen: Einerseits ist die Compilierzeit auf Grund des RAM-residenten Compilers erheblich schneller als bei anderen, vergleichbaren Pascal-Systemen. So ist der Turbo-Compiler bis zu zehnmal schneller als der 2-Pass-Compiler des Apple-UCSD-Systems. Aber auch die Abarbeitung von Programmen ist auf Grund der Tatsache, daß der Turbo-Compiler nicht nur 8080-Code generiert, sondern auch die vielen zusätzlichen, leistungsfähigen Befehle des Z80 optimal nutzt, meist schneller als bei vergleichbaren Systemen. Daß dabei natürlich der mit nur 2 MHz betriebene Z80 des C 64 langsamer ist als der mit 4 MHz betriebene Z80 anderer CP/M-Computer, liegt auf der Hand.
Wenn man nun in Pascal arbeitet und das 1541-Laufwerk mal nicht benutzt, kann man manchmal vergessen, daß man eigentlich vor einem Computer der unteren Preisklasse sitzt. Dieses Gefühl, vor einem wesentlich teureren Gerät zu sitzen, wird durch die elfstellige Rechengenauigkeit nur noch bestärkt. So ergibt 1.0000001 27mal mit sich selbst quadriert, immerhin noch den Wert 674423,34803. Dies entspricht einem Fehler von 0,016 Prozent im Vergleich zum 15stelligen Wert von 674530,470741078 einer CDC-Cyber-Anlage(Die Fehlerquote bei Basic liegt bei über 100 Prozent!). Welches andere Pascal rechnet dazu die ersten 1000 Primzahlen in knapp 3 Sekunden aus?
Neben dem Vorzug effizienter Compilierung und hoher Ausführgeschwindigkeit, bietet Turbo Pascal selbstverständlich auch nützliche Erweiterungen an, die über das Standard-Pascal hinausgehen. Dabei erkennt man schon vom Handbuch her die Vorzugsstellung von IBM; denn für den IBM und Kompatible finden sich zusätzlich Grafik- und Soundbefehle als »IBM-Goodies«. Vielleicht wird man in Turbo auch mal »C 64 Goodies« finden, falls der Hersteller Borland International den C 64-Markt und die C 64-Benutzer Borland entdecken.
Um den Rahmen nicht ganz zu sprengen, seien hier nur einige Erweiterungen knapp skizziert:
- Strings sind voll implementiert. Dazu kommen acht Funktionen/Prozeduren, die den Umgang mit Strings erleichtern.
- Eine Gruppe von Funktionen unterstützt den direkten Zugriff auf absolute Speicheradressen ähnlich PEEK, POKE und VARPTR.
- Durch das Schlüsselwort EXTERNAL werden externe Unterprogramme (speziell in Maschinensprache) in das laufende Programm eingebunden. Analog ist es möglich, durch das Schlüsselwort INLINE Maschinenprogramme im Z80-Code direkt als Prozeduren in Pascal-Programme zu schreiben.
- Dazu bietet der Compiler zehn Direktanweisungen. Die Compileroption C beispielsweise wandelt Pascal-Programme in CP/M 80-Befehle um. Diese neuen CP/M-Kommandos in Verbindung mit dem SUBMIT, besser noch mit XSUBMIT des CP/M, öffnen die Türe weit, um auch komplexe Probleme elegant und übersichtlich zu lösen.
Abgesehen von einzelnen behebbaren Mängeln ist Turbo Pascal die ideale Erweiterung und Ergänzung zum CP/M-Modul des C 64. Durch das langsame Diskettenlaufwerk ist jedoch am kommerziellen Einsatz primär nicht zu denken.
Wo das C 64/Turbo-Pascal-System jedoch optimal hingehören könnte, ist der gesamte Komplex der Aus-, Fort- und Weiterbildung, sei es im privaten Bereich, wo man ein preiswertes und schnelles Pascal-System sucht, oder im öffentlichen Bildungsbereich.
Mit dem schnellen Compiler entstehen keine Geduldsproben durch einen stundenlagen Kampf gegen Tippfehler. Syntax- wie Laufzeitfehler werden rasch entdeckt, denn hat der Compiler einen Fehler gemeldet, so wird nach dem Drücken der CLR/HOME-Taste das Programm im Editor gelistet, und der Cursor steht an der Fehlerstelle.
Wenn jetzt die Stunde genutzt wird, können der C 64 und Turbo-Pascal eine für alle Beteiligten gewinnbringende Ehe eingehen. Was im Moment noch fehlt, ist eine deutsche Einführung in das Turbo-System, unter Berücksichtigung der Eigenheiten des C 64. Sonst stehen wirklich alle Möglichkeiten offen. Denn wo ist ein anderes System, das zu einem Preis von etwa 2 500 Mark nicht nur Drucker, Laufwerk und Zentraleinheit bereithält und eine Einführung in das weitverbreitete Betriebssystem CP/M-80 gestattet, sondern auch darüber hinaus eine der modernsten Sprachen, nämlich Pascal, mit allen Möglichkeiten der modularen Top-Down-Programmierung (weshalb Pascal in einzelnen Bundesländern als verpflichtend für den Informatikunterricht der S II gilt) ohne Abstriche und Einschränkungen zur Verfügung stellt? Hier ist eine große Chance, entweder für Commodore oder auch für andere Hersteller, das leider zu früh »gestorbene« CP/M-Modul für den C 64 wieder zum Leben zu erwecken.
(Hans-Ulrich Korzilius/ev)Vertrieb für Deutschland, Heimsoeth-Software, Frauenhoferstr. 13, 8000 München 5, 0 89-26 40 60
BENCH1 | BENCH2 | BENCH3 | BENCH4 | ||
APPLE/UCSD | 0,8 | 0,4 | 9,9 | 11,1 (s) | 2 MHZ 6502 |
C64/TURBO | 0,8 | 0,4 | 10,4 | 12,6 (s) | 2 MHZ Z80 |
TA PC/TURBO | 0,7 | 0,4 | 5,3 | 6,3 (s) | 4 MHZ Z80 |