"Schwarze Magie" für Programmierer
Bereits auf der CeBIT im März 1990 konnten die Besucher bei GFA-Systemtechnik auf dem Atari-Stand die Vorversion eines neuen Produktes begutachten. Zahlreiche Demoprogramme ließen einige nützliche Prozeduren zur Grafikunterstützung, dafür aber eher wenige im Sound-Bereich erwarten. Außer einem Blick in das vorläufige Handbuch und auf ein paar Demos gab es damals kaum Informationen über diese neue Software-Bibliothek. Auch zahlreiche Telefonate mit dem Hersteller über den endgültigen Erscheinungstermin brachten keinen wesentlichen Erfolg, außer Vertröstungen. Doch mittlerweile ist die zweite Library (engl.: = Bibliothek) mit einigen nützlichen Funktionen und Unterroutinen lieferbar...
Erste Spekulationen auf der Hannover- Messe haben sich bestätigt, denn bei der Grafik-&Sound-Bibliothek (ab jetzt nur GSB genannt) handelt es sich zum größten Teil nur um Grafikunterstützung. Wer also jede Menge Programmierhilfe im Akustikbereich erwartet, wird eher enttäuscht. Gut bedient sind dafür vielprogrammierende Grafikfans, die eigene Überblendungen usw. ähnlich wie mit IMAGIC erstellen möchten.
Die GSB wird nach GFA-Manier im altbekannten, schwarzweißen Ordner auf einer doppelseitig formatierten Diskette geliefert, wie auch sonst? Dieser hält das 260seitige Handbuch zusammen, das sonst als Lose-Blatt-Sammlung sein Dasein fristen müßte. Es ist grob in zwei Abschnitte gegliedert. Im ersten gehen die Autoren darauf ein, wie die Bibliotheken aufgeteilt sind, und erläutern allgemeine Benutzungshinweise im Umgang mit den Unterroutinen. Sehr vorteilhaft ist der zweite, sehr ausführliche Buchabschnitt, in dem sämtliche Routinen mit Parametern, allen möglichen Rückgabewerten und an- deren wichtigen Daten aufgelistet sind. Ferner werden mögliche Fehler und deren Beseitigung erklärt, die im Umgang mit der GSB auftreten können. Sollte es tatsächlich einmal vorkommen, daß Sie eine Routine mit falschen Werten oder Parametern aufrufen, führt dieser Weg nicht wie erwartet zum Bombenleger höchstpersönlich, sondern Sie erhalten eine Fehlerkennung als Rückgabewert.
Auf der mit 520 kBytes belegten Diskette wurden alle Routinen in Ordnern zusammengefaßt, die in der gleichen Grafikauflösung arbeiten. Die Aufgliederung nach verschiedenen Auflösungen schafft nicht nur mehr Übersicht, sondern macht die spezifischen Unterprogramme auch kürzer als solche, die in allen drei Auflösungen arbeiten. Sind nur unterschiedliche Parameter nötig, die kaum zusätzlichen Speicher benötigen, funktioniert eine Prozedur in allen drei Auflösungen.
Bei fast allen Modulen muß der Benutzer einen sogenannten INLINE-Code ein-lesen, derein Maschinenspracheprogramm enthält. Die Handhabung der Unterroutinen ist - im Gegensatz zur letzterschienenen Bibliothek (GEM-Utility-Package zur Unterstützung von GEM-Aufrufen) - kinderleicht. Im allgemeinen laden Sie die Unterroutine per MERGE nach, lesen noch den INLINE-Code (falls nötig) ein, und das war's! Wenn die Handhabung der Routine noch nicht ganz klar ist, genügt ein kurzer Kontrollblick ins Handbuch oder meist auf den Kommentar in der Prozedur selbst (siehe Bild 1). Hier sind sämtliche Demoprogramme abgedruckt, die auf der Diskette zu jeder (!) Routine vorhanden sind. Genügt dies immer noch nicht, lassen sich auch die Demos per MERGE zuladen.
Durch die verwendeten Assembler-Untermodule ist die Hilfsbibliothek nicht nur übersichtlich, sondern auch sehr schnell. Ferner ermöglicht die GSB, auch die Vorteile der Maschinensprache problemlos unter GFA-BASIC zu nutzen, was sich durch kompakten Code sehr positiv auf die Programmlänge auswirkt.
Wie oben erwähnt, liegt die Hauptanwendung der GSB sicherlich im Grafikbereich. Mit 32 zuladbaren Prozeduren, von denen manche für die drei Auflösungen getrennt vorliegen, kann der Programmierer vom eleganten Überblenden zwischen zwei Bildschirmen bis zum gleichzeitigen Arbeiten mit niedriger und mittlerer Auflösung viele Möglichkeiten ausschöpfen (siehe Tabelle 1).
Mit der Funktion COLANI lassen sich beliebige Farbregister im Interrupt rotieren. Die Reihenfolge und die Anzahl der Farben ist dabei beliebig, was bedeutet, daß die Register nicht aufeinander folgen müssen (wie zum Beispiel beim Malprogramm NEOCHROME), sondern auch durch Lücken auseinander liegen können. Da die Routine im Interrupt läuft, müssen Sie sich als Programmierer nach dem Prozeduraufruf nicht weiter um die Farbrotation kümmern. Das Unterprogramm POPPAL "rettet" die aktuelle Farbpalette in einen String. Hierbei handelt es sich um das gleiche Format, wie das der XBIOS-Routine Nummer sechs, so daß sich die ursprüngliche Palette später ohne jegliche Konvertierung restaurieren läßt. Mit PLOAD wird der Rechner zum Ladesklaven, mit Befehl, ein Bild einzu-lesen. Dies kann entweder im NEOCHROME-, DEGAS-, DEGAS-ELITE-oder /VC-Format (32000 Bytes) vorliegen. Die Degas-Bilder müssen unkomprimiert sein. Daß die aktuelle Farbpalette gleich mitgesetzt wird, ist wohl selbstverständlich. PSHOW zeigt sowohl Bilder als auch Bildausschnitte an, die in gleichen Dateiformaten vorliegen müssen.
Eine nützliche Funktion, um die sich der Programmierer nach dem Aufruf nicht weiter kümmern muß (Interrupt!), ist INTAN1. Hiermit lassen sich mit variabler Geschwindigkeit bis zu 65536 Bilder animieren, also in einer bestimmten Reihenfolge anzeigen. DieBilder oder-ausschnitte müssen dazu in einer durch 16 teilbaren Breite vorliegen und können mit INTANI immer an der gleichen Stelle auf dem Bildschirm abgelegt werden. Ein umherfahrender Rennwagen läßt sich hiermit also nicht realisieren.
Zwar bietet GFA-BASIC schon die Möglichkeit, Sprites darzustellen, diese sind aber in ihrer Größe stark eingeschränkt. Damit Sie nun endlich Ihren bewegten Ideen auch räumlich freien Lauf lassen können, gibt es in der GSB die Shapes. Diese sind einzig und allein in der Breite festgelegt. Ihnen bleibt mit verschiedenen Routinen die Wahl zwischen 16, 32 oder 64 Punkten. Die Höhe ist lediglich durch die Bildschirmauflösung beschränkt (also maximal entweder 200 oder 400 Punkte).
Ein sogenanntes "Special Feature", also ein besonderes Merkmal der Grafik- und Sound-Bibliothek, ist die Verwendung von eigenen Zeichensätzen. Hierzu kann der begabte Buchstaben-Designer seine (maximal 256) Zeichen im Speicher (zum Beispiel auf einer verdeckten Bildschirm seite, siehe Bild 10) ablegen. Mit der Routine ?_TKONV, die für die niedrige und mittlere Auflösung vorhanden ist, werden die Grafikdaten in ein Format gebracht, das zum Arbeiten mit den Buchstabe: nötig ist. Je nach eingestellter Bildschrmauflösung werden die 256 Zeichen unter schiedlich auf der Bildschirmseite positioniert. In der niedrigen Auflösung darf ein Zeichen alle 16 Farben enthalten, in der mittleren vier. In diesen beiden Auflösungen sind die Zeichen jeweils acht Punkte breit und acht Punkte hoch. Im Monochrommodus sind die Punkte sogar 16 Punkte hoch. Daß hier nur zwei Farben zur Verfügung stehen, ist klar.
Natürlich muß man nicht alle 256 Zeichen umdefinieren oder neuzeichnen. Befindet sich an der betreffenden Stelle ein Leerraum, wird das entsprechende Zeichen nicht umdefiniert. Es ist also möglich, nur einen Teil des Zeichensatzes zu verändern, wenn etwa nur die Zahlen und Großbuchstaben benötigt werden. Praktisch erscheint uns die Möglichkeit, einen konvertierten Zeichensatz abspeichern zu können, so daß bei einem fertiggestellten Programm die Rechenzeit wegfällt.
Die Textausgabe mit eigenen Zeichen-Sätzen erfolgt mit der Prozedur ?_TEXT88 punktorientiert, kann also wie bei dem Standardbefehl TEXT an jede beliebige x-1 und y-Koordinate gesetzt werden (siehe Bild 2). Laut Angaben im Handbuch ist die Textausgabegeschwindigkeit über das Modul schneller als mit den beiden GFA-BASIC-Befehlen PRINT und TEXT, da im Modul keine Sicherheitsabfragen durchgeführt werden. Fast genauso arbeitet die Unterroutine ZSATZ, bei der der Benutzer jedoch nicht auf eine feste Zeichengröße festgelegt ist.
"Richtig interessant wird es doch erst bei Vektor-Fonts! Die kann ich um beliebige Winkel drehen, verkleinern oder vergrößern lassen und habe kaum Verlust...", mögen Sie jetzt sagen. Keine Angst, die Bibliothek läßt Sie in puncto vektorisierter Zeichensätze nicht im Stich. Hierzu gibt es zwei Routinen namens GRAF2D und GRAF3D. Mit diesen Unterprogrammen lassen sich die in DATA-Zeilen bereits vordefinierten Vektorzeichen am Bildschirm ausgeben, deren Größe sich verändern und deren Aussehen sich verzerren läßt. Ferner besteht die Möglichkeit, das Zeichen um einen beliebigen, ganzzahligen Winkel (nicht nur 0,90,180 und 270 Grad, wie beim Systemzeichensatz) zu drehen, gefüllt oder ungefüllt auszugeben oder sogar horizontal, vertikal oder um beide Achsen spiegeln zu lassen. Bei GRAF3D bestehen die gleichen Veränderungsoptionen, nur erhalten die Zeichen ein dreidimensionales Aussehen (siehe Bild 3).
Unter "Scrollen" bzw. "Scrolling" versteht man das flackerfreie Verschieben von Bildschirmausschnitten, insbesondere von Buchstaben und Grafikzeichen. Mit der GSB können Sie dieses Scrollen problemlos nutzen, ohne sich Gedanken über die Bildschirmsynchronisierung, das Arbeiten mit verdeckten Bildschirmen usw. machen zu müssen. Wenn Sie mit eigenen Zeichensätzen arbeiten möchten, ist ebenfalls die richtige Prozedur für Sie dabei. Allerdings können Sie nicht mit den oben beschriebenen Funktionen ZSATZ oder ?_TKONV arbeiten. Sie müssen einen speziellen Scroll-Zeichensatz konvertieren lassen, was mit der Routine ?_SKONVfür horizontales Scrollen und ?_VKONV für vertikales Verschieben geschieht. Entsprechend werden Ihre Texte mit den Befehlen ?_HSCROL und ?_VSCROL über den Schirm bewegt. Bildschirmausschnitte lassen sich nur vertikal scrollen, was VSCROL erledigt.
Eine der interessantesten Unterroutinen in der GSB ist wahrscheinlich MRES. Mit dieser Funktion sollen sich gleichzeitig die mittlere und die niedrige Auflösung darstellen lassen. Dabei kann der Bildschirm in beliebig viele waagerechte Abschnitte unterschiedlicher Grafikauflösung unterteilt werden. Mit dem Modul SETRES können Sie dem Computer mitteilen, in welchen Bildschirmabschnitt die Ausgabe erfolgen soll. Der Rechner verwaltet dabei die beiden Auflösungen wie zwei: einzelne Bildschirme, die nur in bestimm-1 ten Bereichen sichtbar sind Zum Redak-1 tionsschluß (01.10.1990) war zwar diel Routine MRES funktionsfähig, SETRES f schaltete jedoch noch nicht auf die "andere" Auflösung um. Damit sind derzeit keine korrekten Ausgaben (Text oder Grafik) in die Nicht-Standard-Auflösung möglich, Da sich die Firma GFA momentan jedoch fast ausschließlich um sein neues PC-BASIC kümmert, ist mit einer Fehlerkorrektur kaum vor Beginn des II. Quartals 1991 zu rechnen.
Eine weitere trickreiche Funktion ist die Umschaltung auf verschiedene Farbpaletten mittels MPAL, abhängig von der aktuellen Bildschirmzeile des Rasterzeilenstrahls. Dies entspricht einer Copper-Liste beim Commodore AMIGA beziehungsweise einem Rasterzeilen-Interrupt beim Commodore 64. Mit dieser Unterroutine lassen sich so also problemlos alle 512 Farben gleichzeitig anzeigen (Bild 4). In einer Bildschirmzeile sind jedoch nur die Farben darstellbar, die durch die Grafikauflösung (also entweder vier oder 16) vorgegeben sind. Die Umschaltung kann frühestens alle zwei Bildschirmzeilen erfolgen und läuft nicht gleichzeitig mit MRES und SETRES zusammen, da der gleiche Interrupt benutzt wird.
Möchten Sie eine kleine Animation mit mehreren Bildschirmen ablaufen lassen? Ihre 512 Kilobytes reichen jedoch nicht aus, um die 18 Seiten zu je 32kim Speicher abzulegen? Und soviel Zeit zum Laden von Diskette zu vergeuden, sehen Sie genauso wenig ein wie eine Animation, die alle zwei Sekunden ein Bild weiterschaltet: Viiieeel zu langsam! Da hilft nur eine Komprimierroutine weiter: ?_OPKOM? und ?_DEKOMP heißen Ihre Retter in der Not. Hiermit sparen Sie nicht nur Platz im Speicher und auf Diskette, Sie haben die Daten zwangsläufig auch schneller eingeladen und können Ihre Animation auf Ihrem 520er doch noch Wirklichkeit werden lassen. Da auf zeitaufwendige, aber hochkomprimierende Rechnungen verzichtet wurde, kann es laut GFA-System-technik auch schon mal vorkommen, daß sehr fein gezeichnete Bilder hinterher mehr Speicher brauchen .Eine Überprüfung nach der Komprimierung ist folglich anzuraten.
Von Hilfsprogrammen wie PROTOS sind Bildschirmlupen mittlerweile ja hinreichend bekannt. Mit der GSB können Sie jetzt in der hohen Auflösung Ihre eigenen Software-Lupen programmieren, deren Vergrößerung von zweifach bis hin zu 640fach (für Blinde oder Großbildschirmbesitzer?) gehen kann. Hierbei ist empfehlenswert, mit einem zweiten - unsichtbaren - Bildschirm zu arbeiten. wodurch sich eine Art Lupe wie bei dem Programm ST AD verwirklichen läßt. Einzige Auflage an die Lupe: Der zu vergrößernde Ausschnitt darf maximal 640 mal 400 Punkte umfassen.
Die Grafik- und Sound-Bibliothek hält aber auch zahlreiche Unterroutinen bereit, die dem hilflosen Programmierer beim Ein- und Ausblenden von Grafikseiter oder -ausschnitten "unter die Arme greifen". Der Ersteller von Dia-Shows uni ähnlichem hat in einer Routine die Auswahl zwischen 13 (dreizehn!) verschiedenen Effekten (siehe Tabelle 2 und Bilden bis 8) zum Über- oder Einblenden (?_FADEOV), die genauso auch zuu Ausblenden vorhanden sind (?_FADEOF), Hiermit ist man jedoch auf einen sogenannten Bildschirmabschnitt beschränkt, der immer über die gesamte Breite geht undnur im y-Bereich variiert werdenkann, Zusätzlich gibt es drei weitere Prozeduren (OFF14, OFF'15, OFF 16), mit denen sich ein beliebiger rechteckiger Bildschirmabschnitt entweder durch sich verkleinernde Rechtecke, durch diagonal verlaufende Linien oder aber zeilenweise vom oberen und unteren Rand her ausblenden läßt. Hierbei kann im Gegensatz zu den 13 Arten zusätzlich die Farbe angegeben werden, mit der ausgeblendet wird. Eine f weitere Möglichkeit, ein Bild auszublenden, kennen Sie bestimmt vom Fernsehen. Langsam wird das Bild immer! dunkler, bis es schließlich ganz schwarz ist. Dies erledigt nun die Routine .?_CPOFF für uns. Genau das Gegenteil, also vom schwarzen zum hellen Schirm, bewirk! ?_CPON und blendet das Bild wieder ein Die Farbpalette läßt sich ebenfalls verändern. Mit dem Unterprogramm i ?_GREYS werden die aktuellen bunten Farben in ein (tristes?) Graumuster umgewandelt, dies dient jedoch nicht zum Umrechnen eines Bildes der mittleren oder niedrigen Auflösung für den Monochrommonitor. Weiterhin läßt sich ein Grundaufhellungswert angeben, um den die komplette Palette aufgehellt wird.
Zusätzlich wurden ein paar Routinen für den Bereich Sound in die Bibliothek aufgenommen (siehe Tabelle 3). Mit der Funktion SMPLAY können Sie sowohl Geräusche oder Musik digitalisieren (!) als auch digitalisierte Töne abspielen. Laut Handbuch ist ein "Aufnehmen" der Klänge "mit fast allen handelsüblichen 8-Bit-Soundsamplern" möglich. Verwendet wird das Standard-8-Bit-Format, womit es möglich sein sollte, Musikstücke der meisten Akustik-Digitalisierer zu verwenden. Es steht offen, die Töne in Echtzeit abzuspielen (das heißt, es wird genauso schnell wiedergegeben, wie digitalisiert wurde) oder wahlweise schneller bzw. langsamer "nachzuspielen". Ferner können Sie der Prozedur mitteilen, wie oft der Sound abgespielt werden soll.
Wir waren im ersten Moment doch ein wenig überrascht, als wir ein Beispiel-Demo ablaufen ließen, das den geheimnisvollen Namen SPEECH.LST trägt. Jetzt fängt der Kerl auch noch an, uns die Ohren vollzusülzen! Die Programmierer der GSB, Helmut Micko und Hans-Peter Burk haben es doch tatsächlich fertiggebracht, aus dem Kasten unter GFA-BASIC auch noch eine Stimme herauszukitzeln. Diese klingt zwar äußerst blechern, aber durch Verändern der Sprechgeschwindigkeit lassen sich von "Micky Maus" bis "Elmar Gunsch" viele Varianten erzeugen. Und wer lange genug herumprobiert, bekommt auch heraus, wie man aus einem englisch klingenden "Hello" ein sich einigermaßen deutsch anhörendes "Hallo" macht. SPEECH gibt übrigens jeden beliebigen Text-String aus, der alle Buchstaben des Alphabets sowie die Umlaute Ä,Ö,Ü und B enthalten darf.
WAREPSND können Sie nun Ihre alten (selbstkomponierten oder eventuell auch irgendwo abgekupferten) Musikstücke wieder aus der Diskettenbox ausgraben.
Diese Funktion verwendet Sounds, die von der XBIOS-Routine Nummer 32 im Interrupt abgespielt werden. Dadurch können Töne und Geräusche ablaufen, ohne das aktuelle Programm zu stören.
Wahlweise können Sie die "akustische Hintergrunduntermalung" nach einer beliebigen Zeit sofort abbrechen oder aber automatisch wiederholen lassen, bis Sie entnervt den Rechner ausschalten...
Ihnen reicht die Tonwiedergabequalität Ihres SM124-Monitors bei den von Compact-Disk digitalisierten Klängen eines bellenden Hundes nicht aus? Sie haben aber noch irgendwo im Schrank ein älteres ROLAND-Keyboard mit Midi- Anschluß? Hier hilft Ihnen MIDIKY weiter, denn diese Prozedur spielt Soundsamples über ein angeschlossenes MIDI- Keyboard ab. Jeder Taste am Synthi wird dabei eine bestimmte Abspielgeschwindigkeit zugewiesen, was sich zwangsläufig in verschiedenen Tonhöhen widerspiegelt. Wenn Ihr Hund also demnächst "Alle meine Entchen" bellt...
Unter der Rubrik Sonstiges finden sich all die Hilfestellungen, die sich weder der Grafik noch dem Sound zuordnen ließen (siehe Tabelle 4). Wer nicht dauernd irgendein Accessory die aktuelle Uhrzeit am rechten oberen Bildschirmrand servieren läßt, kann mit der Funktion UHR nun die Zeit an einer beliebigen Cursor-Position per Interrupt anzeigen lassen. Die Uhrzeit muß dabei nicht die aktuelle Zeit sein, da die GSB-Uhr unabhängig hiervon läuft. Denkbar sind neben Zeitanzeigen auch Informationen, wie lange bereits das Programm benutzt wurde und ähnliches. Ein Bildschirmschoner findet sich ebenfalls in der Sammlung, der ein "Einbrennen" eines Bildes in die Phosphorschicht des angeschlossenen Monitores vermeiden soll. Der Befehl BLACK übernimmt zwar keine Zeitkontrolle, aber er schaltet das aktuelle Bild ebenfalls aus oder ein. Dies kann zum Beispiel dazu dienen, unbemerkt eine Grafikseite einzuladen.
Mußten Sie schon einmal mehrere Speicherblöcke verschieben, die alle gleich groß waren, aber immer um eine bestimmte Anzahl von Bytes auseinanderlagen? Ziemlich lästig, immer wieder mit einer Schleife und einem Zähler den Befehl BMOVE anzuwenden. Genau an diesem Punkt setzt die Unterroutine PATMOVE an, die Speicherbereiche verschiebt, die durch gleichgroße "Lücken" getrennt sind.
Die Grafik- und Sound-Bibliothek wartet mit zwei zusätzlichen Eingaberoutinen auf: NINPUT und PINPUT. Mit der Funktion NINPUT lassen sich nur Zahlen eingeben. Aber dies ist noch nicht alles. Als Programmierer übergibt man NINPUT den gültigen Wertebereich, in dem die Zahleneingabe liegen soll. Ist die Eingabe ungültig, wird sie im Programm direkt durch die Prozedur abgefangen und neu abgefragt; der Programmierer erhält also nur gültige Werte zurück. Da hier mit dem Befehl TEXT gearbeitet wird, ist nicht nur eine punktgenaue Positionierung möglich, sondern es lassen sich mittels DEFTEXT auch Textattribute angeben. Ferner werden bei einer velangten Zahleneingabe gedrückte Buchstaben ignoriert und somit ausgefiltert, wodurch eine eventuelle Zerstörung von Bildschirmmasken vermieden wird (keine lästige Eingabewiederholung in der nächsten Zeile). Aber auch Zeichenketten lassen sich nun auf den Punkt genau positioniert eingeben, wozu PINPUT dient. Hier gelten die gleichen Vorteile aufgrund des TEXT-Befehles wie bei NINPUT.
Arbeiten Ihre Programme im Farbmodus? Was, Sie rufen jedesmal beim Programmstart mit EXEC ein Maschinenspracheprogramm auf, das Ihre Bildfrequenz auf 60 Hertz einstellt? Von nun an können Sie sich das sparen, denn mit der Funktion SW5060 schalten Sie ab sofort mühelos zwischen 50 oder 60 Hertz Bildwiederholfrequenz (wie sie genau heißt) hin und her. Jetzt sagen Sie bloß nicht, das war Ihnen alles zuviel, und Sie müßten sich beim (mittlerweile altbekannten) "Affengriff' zum Reset-Knopf Ihre Wirbelsäule verrenken. Nein, noch eine Prozedur! RESET heißt sie, wie denn sonst. Ich hoffe, ab sofort gehören alle Ihre Rückenschmerzen der Vergangenheit an, klar? Diese Funktion - wie könnte es wohl anders sein, bei dem Namen - führt einen Software-Reset durch. Dies hilft vielleicht denjenigen, ihre Programme durch Reset zu beeenden, die nicht möchten, daß irgendwer irgendwannmal irgendwie in ihre urheberrechtlich individuellen Werke "hineinkommt".
Sind Sie ein eingefleischter Grafikfan, der seine eigenen GFA BASIC-Programme gerne mit lustiger Effekthascherei aufpäppeln möchte? Ja? Dann ist die Grafik-und Sound-Bibliothek genau das richtige für Sie, mit den zahlreichen Funktionen im optischen Bereich, die neben eigenen Zeichensätzen (sogar vektorisiert) und Scrolling auch das Aus- und Einblenden sowie den Umgang mit Shapes deutlich vereinfachen. Ferner wird vor allem der Umgang mit den Farbpaletten und der niedrigen und mittleren Auflösung stark unterstützt. Natürlich kommen auch die Besitzer eines Monochrombildschirmes keineswegs zu kurz, aber manche Effekte (wie zum Beispiel das Rotieren der Palette, genannt Colorcycling) lassen sich systembedingt nun mal nur in Farbe verwirklichen. Besonders interessant sind die beiden Routinen MRES und MPAL, mit denen Sie gleichzeitig niedrige und mittlere Auflösung oder bis zu 512 Farben anzeigen können.
Etwas zu kurz kommt der Sound-Fan, weshalb sich die Anschaffung, vor allem allein wegen der Sound-Funktionen, nicht lohnen dürfte. Wem die wenigen Zusatzbefehle jedoch wie gerufen kommen, der ist mit der GSB eventuell endlich seine Kopfschmerzen los, zumal ja auch viele weitere Funktionen zur Verfügung stehen. Umso interessanter sind die zwar wenigen, aber umso wirkungsvolleren Extras, wie etwa die interruptgesteuerte Uhr und die beiden Eingaberoutinen, um nur ein paar zu nennen.
Viele Assembler-Codes tragen zu einer hohen Geschwindigkeit der Unterprozeduren bei und eröffnen Möglichkeiten, die dem "gewöhnlichen" GFA-Programmie-rer ohne umfassende Maschinensprachekenntnisse sonst, zum Teil aus mangelnden Möglichkeiten, teils wegen der geringeren Geschwindigkeit, verborgen bleiben (so zum Beispiel die Interrupt-Programmierung). Die Gliederung auf der Diskette in vielerlei verschiedene Ordner und die Aufspaltung in mehrere Teile (Beispiel, Prozedur, INLINE-Assembler-Code etc.) ist anfangs zwar gewöhnungsbedürftig, hat man das Ablagesystem jedoch erst einmal "gefressen", kommt man damit gut zurecht und findet Prozeduren umso leichter aus dem Gewühl der vielen Dateien.
Das Handbuch ist geradezu vorbildlich. Jeder Befehl wird äußerst ausführlich beschrieben, auf jeden Parameter wird einzeln eingegangen. Weiterhin befindet sich zu jeder Unterroutine ein Beispielprogramm auf Diskette, das Funktion und Aufruf nochmals verdeutlicht. Auch dieses Demo ist im Handbuch genau erläutert. Durch das Voranstellen von Suffixen (eine Art vorangestelltes Kennzeichen) vor den Prozedurnamen läßt sich leicht zwischen den richtigen Routinen für die jeweilige Aulösung differenzieren, falls sie nicht in allen drei Auflösungen laufen. Ein Großbildschirm wird durch die Begrenzung der Wertebereiche und die Spezialisierung der meisten Funktionen bisher nicht unterstützt.
Insgesamt bietet die Bibliothek sicherlich für jeden Programmierer einige Unterprogramme, über die er sich schon längs den Kopf zerbrochen hat, oder an denen er schon mehrfach gescheitert ist. Vielleicht; ist das Problem sogar bereits gelöst, ab« in der GSB nur ein Drittel so lang... Vor allem die hohe Geschwindigkeit und die zusätzlichen Möglichkeiten durch die Verwendung von Assembler-Code sowie' die übersichtliche Strukturierung überzeugen. Auch das Handbuch ist allemal sein Geld wert und bietet alle nötigen Informationen. Dies alles führt zum Gesamturteil: zum Preis von 149 DMist sie jedem programmierenden GFA-BASIC-Grafikfan uneingeschränkt 91 empfehlen.
Rf
Übersicht über die grafischen Prozeduren:
(Low/Middle/High) = spezifische Routinen für die angegebenen Auflösungen
Prozedurname | Funktion |
---|---|
COLANI | Rotieren von Farbregistern im Interrupt |
PLOAD | Laden eines .NEO/.PI?/*.PIC mit Setzen der Palette |
POPPAL | aktuelle Farbpalette in String zwischen speichern |
PSHOW | Bilder-Show ganzer .NEO-/.PI?-/*.PIC-Bilder oder von Ausschnitten daraus |
INTANI | Animation eines veränderlich großen Bildschirmausschnittes |
?_SHAP16 | (L/M/H) Darstellung von 16 Punkte breiten SHAPES |
?_SHAP32 | (L/M/H) " " 32 " " " |
?_SHAP64 | (L/M/H) " " 64 " " " |
?_TKONV | (L/M) Konvertieren eines selbstgemalten Zeichensatzes |
?_TEXT88 | (L/M/H) Schreiben mit eigenen Zeichensätzen (ohne GDOS!), Zeichengröße vorgegeben |
MRES | Gleichzeitige Darstellung der mittleren und niedrigen Auflösung in beliebig vielen Abschnitten |
SETRES | Wahl der Bildschirmauflösung, für die alle Ausgaben gelten sollen, wenn MRES aktiv ist |
MPAL | Darstellung von mehr als 16 beziehungsweise vier Farben in der entsprechenden Auflösung |
ZSATZ | Schreiben mit eigenen Zeichensätzen (ohne GDOS!), mit beliebiger Zeichengröße |
? OPKOMP | (L/M/H) Komprimieren von Bildern in der jeweil. Auflösung |
?_DEKOMP | (L/M/H) Entkomprimieren von Bildern |
H_LUPE | (H) Vergrößern eines rechteckigen Bereiches um einen Faktor zwischen zwei- und 640fach (!) |
?_FADEOF | (L/M/H) Ausblenden eines Bildschirmabschnitts in wählbarer Farbe und mit 13 verschiedenen Effekten |
OFF14 | Ausblenden durch verkleinernde Rechtecke |
OFF15 | Ausblenden durch diagonal verlaufende Linien |
OFF16 | Ausblenden zeilenweise von oben und unten |
?_FADEOV | (L/M/H) Über- oder Einblenden eines Bildschirmabschnittes durch 13 verschiedene Effekte |
?_GREYS | (L/M) Umwandeln einer Farbpalette in Grauwerte |
?_CPOFF | (L/M) Ausblenden eines Bildes in schwarze Farbe |
?_CPON | (L/M) Einblenden eines- Bildes von schwarz zu normal |
?_SKONV | (L/M/H) Konvertieren von gemalten Zeichensätzen für horizontales Scrolling |
?_HSCROL | (L/M/H) Horizontales Scrolling von Text mit selbstgemalten Zeichensätzen |
?_VKONV | (L/M/H) Konvertieren von gemalten Zeichensätzen für vertikales Scrolling |
?_VSCROL | (L/M/H) Vertikales Scrolling von Text mit selbstgemalten Zeichensätzen |
GRAF_2D | Ausgabe von 2D-Vektorbuchstaben, die gedreht, gespiegelt, vergrößert/-kleinert etc. werden können |
GRAFJ3D | Ausgabe von 3D-Vektorbuchstaben, die gedreht, gespiegelt, vergrößert/-kleinert etc. werden können |
VSCROL | Vertikales Scrollen eines Bildschirmausschnittes |
Übersicht über die Ein- und Ausblendverfahren bei FADEOF/FADEOV:
Nummer | Art der Ausblendung (Einblendung entsprechend) |
---|---|
1 | Bildabschnitt löst sich punktweise auf, wobei ein Muster angegeben werden kann |
2 | Ausblendung zeilenweise vom oberen Rand |
3 | Ausblendung zeilenweise vom oberen und unteren Rand |
4 | Ausblendung zeilenweise vom unteren Rand |
5 | Ausblendung spaltenweise vom linken Rand |
6 | Ausblendung spaltenweise vom rechten Rand |
7 | Ausblendung spaltenweise vom linken und rechten Rand |
8 | Ausblendung durch Streifenmuster, das von unten und oben wächst |
9 | Ausblendung durch abwechselnd links und rechts wachsende Streifen |
10 | Ausblendung wie senkrecht gestellte Jalousie |
11 | Ausblendung durch größer werdende Zeilenstückchen |
12 | Weg-Scrollen nach unten |
13 | Weg-Scrollen nach oben |
Übersicht über die sonstigen Prozeduren:
Prozedurname Funktion
UHR zeigt im Interrupt an beliebiger Position Uhr an
BLACK schaltet den Bildschirm ein und aus
PATMOV verschiebt durch Lücken getrennte Speicherbereiche
NINPUT Input an beliebiger x/y-Pos. nur für Zahlen
PINPUT Input an beliebiger x/y-Pos. für Texte
SW5060 Schaltet im Farbmodus auf 50 oder 60 Hertz um
RESET Verursacht einen Software-Reset
Übersicht über die Prozeduren für Soundbe- und -Verarbeitung:
Prozedurname Funktion
SMPLAY Digitalisiert Sounds oder spielt sie ab
SPEECH Erweckt den ST zum etwas blechernen Redner
REPSND Spielt ein 8-Bit-Sample ein- oder mehrfach im Interrupt ab, ohne das Programm aufzuhalten MIDIKY Spielt ein Sample über MIDI-Keyboard ab