★ APPLICATIONS ★ DIVERS ★ Teil 2 ★ |
Profi-RSX 2 (CPC Amstrad International) | Applications Divers |
Wie bereits vor einem Monat angekündigt, folgt hier Teil 2 unserer Befehlserweiterung. Dieses ist auch gleichzeitig der zweite und letzte Teil der Graphik-Befehle. Die Befehle der heutigen Folge bewirken dabei kein Zeichnen von Figuren, sondern die Verwaltung der bekannten und von neuen Fenstern. Wie Sie wahrscheinlich wissen, gibt es bei den Schneider CPC's 8 Text-Fenster, jedoch nur ein Graphik-Fenster. Warum wird hier der Graphik-Bereich benachteiligt? Es gibt durchaus Anwendungsfalle, wo mehrere Graphik-Fenster wünschenswert wären. Deshalb stellen wir Ihnen hier 6 zusätzliche Befehle zur Verfügung, mit denen Sie jetzt auch 8 Graphik-Fenster verwalten können. Dabei unterscheiden diese sich in Ihrer Handhabung nicht von dem »Handling« des bisher einzigen Fensters. Der Locomotive BASIC-Befehl, der hier wieder im Mittelpunkt steht, ist, wie bereits in Teil 1 erwähnt, der Befehl ORIGIN. Zur Wiederholung: Hiermit können Sie die Grenzen des Graphik-Fensters festlegen und zusätzlich noch den Startpunkt des Graphik-Cursors definieren. Da dieser Befehl bereits existiert und für unsere Anwendung genau passend ist, habe ich einen gleichlautenden Befehl innerhalb von Profi-RSX geschaffen, der sich nur durch einen zusätzlichen Parameter von dem Standard-Befehl unterscheidet. Dieser wird als erster dem Befehlswort nachgestellt und gibt die Fen-ster-Nummer an, für das die folgenden Parameter gelten sollen. Die Syntax ist: IORIGIN, Graphik-Fenster-Nr. (, X-, Y-Urspung) (, links, rechts, oben, unten) Sie können den Ursprung des Graphik-Cursors sowie die Lage und die Ausmaße für jedes Fenster getrennt festlegen. Dabei ist der Ursprung des Cursors relativ zur unteren linken Ecke des Fensters anzugeben, nicht zur linken unteren Ecke des Bildschirms. Für die Ecken des Fensters muß dagegen der Abstand zur linken unteren Ecke des Bildschirms angegeben werden. Wie wendet man diese Befehle konkret an? Am besten initalisieren Sie zu Anfang alle Fenster mit Hilfe von |RGW, womit Sie erreichen, daß alle Fenster auf die Ausmaße und Werte des Standard-Fensters gesetzt werden. Danach definieren Sie soviel Fenster wie Sie benötigen, mit den von Ihnen gewünschten Werten. Dabei steht die Fenster-Nr. 0 für das Standard-Fenster, die Werte 1-7 für die zusätzlich definierbaren Fenster. Werte > 7 sind nicht zulässig. Um von einem zum anderen Fenster umzuschalten, benutzen Sieden Befehl |GWINDOW, G.-Fenster-Nr. Hiernach laufen ab sofort alle Ausgaben über diesen Kanal. Übrigens hat jedes Graphik-Fenster auch eine eigene Graphikstift-und Graphikpapierfarbe. Alles weitere erfahren Sie selbsverständlich wieder aus der Befehlsliste im Anschluß an diesen Beitrag. Jetzt haben Sie zwar insgesamt 16 Fenster, aber »echte« Fenster, wie Sie Ihnen vielleicht von (meistens) 16 Bit-Rechnern wie Atari ST oder Schneider PC bekannt sind. Diese würden auch Ihrem CPC besser zu Gesicht stehen. Zumal der CPC von seiner Graphik-Auflösung genauso leistungsfähig wie ein IBM PC ist. »Echte« Fenster zeichnen sich dadurch aus, daß diese, wenn sie auf dem Bildschirm eingeblendet werden, den Hintergrund nicht zerstören, sondern ihn sichern (d.h. den Bildschirm oder einen Teil davon, in den internen Speicher kopieren). Das erfordert natürlich eine nicht unbedeutende Menge an freiem RAM, benötigt doch ein kompletter CPC-Bildschirm fast 16K Speicherplatz. Anm. für Spezialisten: Es sind beim CPC nicht 16K (entsprechend 16384 Bytes), wie fast überall irrtümlicherweise geschrieben wird, sondern »nur« genau 16000 Bytes (80 Bytes in 200 Zeilen). Die restlichen 384 Bytes werden beim CPC nicht verwendet — vorausgesetzt der Bildschirm wird nicht gescrollt, denn dann rücken die Bytes eventuell in den Blickpunkt. Wir brauchen für ein zweites, vollständiges Bildschirmfenster also 16000 Bytes Speicherplatz. Deshalb gibt es gewisse Einschränkungen bei der Anwendung der Fenster-Technik auf dem CPC. Aus diesem Grunde haben wohl die Entwickler von Locomotive Software sich mit der eingeschränkten Fenster-Verwaltung (ohne dem Sichern des Bildschirms) zufrieden gegeben. Da wir das nicht wollen, denn gerade die Fenster-Technik gibt Ihren Programmen einen professionellen Touch, habe ich die Verwaltung voll in die bereits existierende Firmware eingefügt. Gerade diese nahtlose Einbindung ist für die Programmerstellung von großem Vorteil. Sie können demnach 8 Fenster definieren, deren Ausmaße mit den »normalen« Text-Fenstern immer übereinstimmen. Auch die Anwendung ist denkbar einfach. Sie definieren zuerst mit Hilfe des BASIC-Befehls WINDOW Ihre Fenster. Danach erfragen Sie bei Profi RSX den benötigten Speicherplatz mit Hilfe von |WLAENGE, Fenster-Nr., Adresse Integer Variable. In der angegebenen Variablen erhalten Sie dann umgehend die benötigte Speicherplatzgröße zurück. Wichtig ist nur, daß Sie vorher das Fenster bereits definiert haben (möglichst nicht auf das ganze Bildschirmformat). Dann senken Sie HIMEM um die Länge ab und übergeben danach der Profi RSX-Fenster-Verwaltung den Wert HIMEM +1 und die bereits errechnete Länge mit Hilfe des Befehls |W.SET. Das ist schon alles. Jetzt können Sie das Fenster bereits auf den Bildschirm einblenden. Nehmen wir einmal an, Sie haben Fenster Nr. 1 bereits definiert. Dann müßten Sie öWINDOW, 1 eingeben und das Fenster wird auf dem Bildschirm sichtbar werden. Wahrscheinlich ist der Inhalt unsinnig (das ist der alte Speicherinhalt), Sie können es jedoch mit CLS # 1 löschen. Wollen Sie nun Ausgaben in das Fenster tätigen, so müssen Sie immer erst den Kanal # 1 an wählen, z.B. beim PRINT-Befehl (PRINT # 1 ,«Dies ist ein 'echtes' Fenster!«). Durch nochmalige Eingabe von öWINDOW, 1 verschwindet das Fenster aus dem Bildschirm und der Hintergrund wird wieder sichtbar. Der Befehl öWINDOW schaltet also wechselweise (FlipFlop) ein Fenster auf Sicht- oder Unsichtbar. Wichtig: Ausgaben auf Kanal 1 sind immer möglich, zerstören jedoch den Hintergrund, wenn das Fenster nicht sichtbar ist. Sie dürfen auf keinen Fall vergessen, das Fenster vorher einzublenden. Aber keine Angst, probieren geht über studieren! Damit haben wir schon die zweite Befehlsgruppe abgehandelt, es fehlt nur noch ein wichtiger Hinweis, bevor wir an den dritten Komplex gehen. Wichtig: Wenn Sie ein Fenster definiert haben, dürfen Sie nicht mehr den Mode wechseln, da sich dann die Größe des benötigten Speicherplatzes ändert und außerdem der Inhalt unleserlich wird. Ebenso ist es verboten, während ein Fenster auf dem Bildschirm ist, diesen zu scrollen. Anm.: Natürlich wären »echte« Graphik-Fenster ebenfalls wünschenswert und ohne Probleme zu programmieren. Doch aus Speicherplatzgründen habe ich darauf verzichtet. Dennoch ein Tip für diejenigen, die dies trotzdem realisieren wollen. Sie brauchen dazu nur je ein Text- und ein Graphik-Fenster auf die gleiche Stelle des Bildschirms zu definieren. Dann erfolgen alle Graphik-Ausgaben in diesem Bereich und Sie können trotzdem mit Hilfe der Text-Fenster Befehle diesen Bereich ständig ein- und ausblenden. Noch kurz zwischendurch möchte ich hier auf 3 Befehle hinweisen, speziell aber auf den Befehl können Sie 2 Bildschirme verwalten und diese auch als »unsichtbares« Ausgabegerät verwenden. Auch die hier vorliegende Lösung ist nicht nach dem Motto »Hauptsache einen SCREEN-Befehl, egal wie.«, wie in vielen Listings bereits abgedruckt, erstellt, sondern diese beiden Bildschirme werden komplett durch Profi RSX verwaltet. Dabei wird das unterschiedliche Scrolling der Schirme immer beachtet, ebenso wie die momentane RAM-Aufteilung. D.h., daß eine Umschaltung nur möglich ist, wenn der entsprechende Speicherbereich abgesichert ist. Das ist wichtig, da sonst eventuell sogar Ihr BASIC-Programm zerstört würde! Wenn diese Faktoren nicht mit überwacht werden müßten, täten es zwei BASIC-OUT-Befehle auch. Zusätzlich können Sie diese noch - das ist neu — »transparent übereinanderlegen«, um deren Inhalte zu vergleichen. Das Ergebnis entspricht dem Überdecken zweier Folien. Der letzte große Block dieser Ausgabe sind die Kopier-Befehle, die in Ihrer Vielfalt und Geschwindigkeit wahrscheinlich einmalig für die CPC's sind. Sehen Sie sich dazu zuerst das Listing 1 und die zugehörige Abbildung 1 an. Dort sehen Sie den kompletten Source-Code sowie den zugehörigen Programmablaufplan der gesamten Graphik-Kopier-befehle. Dabei ist es auffällig, daß es nur eine Routine gibt, die für alle Befehle die Ausgabe übernimmt, egal ob es um das Vergrößern/Verkleinern, Austauschen oder nur um das einfache Kopieren von A nach B geht. Und das alles kombiniert mit oder ohne spiegeln und der gezielten Auswahl, bestimmte Punkte einer Farbe. Dabei ist die sehr hohe Geschwindigkeit, mit der alles ausgeführt wird, beachtlich, handelt es sich beim CPC schließlich nur um einen 8-Bit (Z80 A) Rechner mit einer effektiven Taktfrequenz von ca. 3,2 MHz. Um eine hohe Geschwindigkeit zu erreichen, muß der Bildschirm direkt »bearbeitet« werden, außerdem können Fen-ster-Grenzen und dergleichen nicht berücksichtigt werden. Eine Ausnahme stellt der aktuelle Darstellungsmodus (FORCE, XOR, etc.) dar, der immer beachtet wird. Da die Routine vollständig kommentiert ist, soll hier nicht nocheinmal der Ablauf geschildert werden, wir wollen hier nur ein paar »Tricks« näher betrachten, die auffällig sind. Die Routine rechnet immer intern mit einem Vergrößerungs- und einem Verkleinerungsfaktor, wobei bei den COPY und den SWAP-Befehlen diese einfach auf 1 gesetzt sind. Außerdem arbeitet die Routine intern mit 2 Flags, wodurch sie unterscheiden kann, ob innerhalb eines oder zwischen zwei Bildschirmen kopiert werden soll und ob die Bereiche nur kopiert oder auch auszutauschen sind. Auf dem ersten Blick scheint dies unmöglich, da scheinbar ständig zwischen 2 Bildschirmen umgeschaltet werden muß, um den einen Punkt aus dem ersten »Screen« zu lesen und ihn danach in den nächsten zu schreiben. Das ist auch eine Möglichkeit, dieses zu programmieren, doch es geht auch anders. Um es anders zu machen, darf intern jedoch nicht mehr mit Koordinaten gerechnet werden. Es müssen stattdessen direkte Speicheradressen verwendet werden. Diese Voraussetzung wird von der Routine bereits erfüllt, da hierdurch auch der gesamte Ablauf der Routine beschleunigt wird. Anm.: Um einem Punkt auf dem Bildschirm darzustellen, geben Sie meistens die X-, Y-Koordinaten an, mit denen er eindeutig »bemaßt« ist. Es ist aber auch möglich, diesen mit Speicheradressen zu adressieren. Dabei fällt auf, daß pro Adresse 2, 4 oder 8 Punkte vorhanden sind, je nach Auflösung. Eine Speicheradresse reicht deshalb nicht zur zweifelsfreien Lage-Bestimmung aus, zusätzlich wird noch eine »Maske« benötigt, die die einzelnen Bits (die für die Darstellung eines Pixels zuständig sind) des Bytes der Speicherstelle festlegt. In der Routine wird folgerichtig nur mit zwei Adressen (Ausgangs- und Zielfeld) und den zugehörigen Masken gerechnet. Dabei ist es völlig uninteressant, ob diese Speicherstellen in dem Bereich von &C000 — &FFFF (dem normalen Bildschirm) oder von &4000 — &7FFF (dem zweiten B.) liegen. Damit ist das Problem fast gelöst; die Routine kümmert sich überhaupt nicht darum, wo sie kopiert. Es wäre durchaus möglich, die Routine zum Kopieren von Bits innerhalb des Speichers einzusetzen. Die Routine benötigt als Einsprungsbedingung nur die Anfangsadressen, die dann bereits im richtigen Bildschirm liegen müssen. Das wird durch die . .SCR«-Befehle erreicht, die den richtigen Bildschirm einschalten und nach Beendigung der Routine auch den vorherigen Zustand wieder herstellen. Innerhalb der Routine wird der Bildschirm dann einmal gewechselt, um die Adressen des Zielfeldes zu ermitteln. Zur Erkennung dieser Notwendigkeit wird ein Flag benutzt. Dazu wird in Zeile 10890 das CARRY-Flag benutzt. Normalerweise steht dort ein XOR A-Be-fehl, das CARRY wird bei der Programmabarbeitung auf falsch gesetzt. Durch alle ».. .SCR«-Befehle wird in diese Speicherstellen ein SCF-Befehl eingesetzt. Dadurch wird das CARRY-Flag bei dem Durchlauf des Programmes durch den Prozessor auf wahr (= 1) gesetzt, und somit ist die Bedingung für den folgenden Sprung nicht mehr erfüllt. Wenn das CARRY auf 1 ist, wird die Routine m den folgenden Zeilen zur Bildschirmumschaltung ablaufen, ansonsten wird der Programmablauf durch einen Sprung hinter diesen Abschnitt normal fortgeführt. Ähnlich ist die Abfrage bezüglich des SWAP-Befehls in Zeile 11510 realisiert worden. Allerdings können wir keinen XOR A-Befehl verwenden, da der Inhalt von A nach dieser Abfrage weiter wichtig ist. Deshalb ist ein SCF-Befehl vorangestellt, der das CARRY immer auf wahr setzt. Nachfolgend bewirkt der CCF-Be-fehl ein Komplementieren des CARRYs, es ist anschließend auf falsch. Dadurch wird der folgende Sprung ausgeführt. Das CARRY wird also erst auf ' 1 ' und mit dem nächsten Befehl sofort wieder auf '0' gebracht. Ist die SWAP-Funktion aktiv, wird das CARRY nicht verändert. Folgerichtig bleibt es auf wahr und der Sprung wird nicht ausgeführt. Dieses wird durch das Einsetzen des Befehls NOP erreicht, der die Eigenschaft hat, daß er nichts bewirkt. Die Register und der Zustand der Flags bleiben aus diesem Grund unverändert. Anm.: Er bewirkt genaugenommen doch etwas, und zwar das Erhöhen des Befehlszählers (Programm Counter, (PC)) um eins, damit der nächste Befehl abgearbeitet werden kann. Es wäre als Alternative denkbar, daß der Sprung direkt beeinflußt wird. Dies würde bedeuten, daß anstelle der bedingten Sprung-Befehle (JR NC,...) ein absoluter (relativer) Sprung (JR ...) eingesetzt wird. Dann müßten beim anderen Fall zwei NOP-Befehle eingefügt werden. Dieses wäre in der Ausführung schneller, es hat aber mehrere schwerwiegende Nachteile. Zum einen würde die Routine, welche die Speicherstelle zu manipulieren hat, erheblich länger und das Programm würde insgesamt fehleranfälliger. In diesem Fall dürfte die Routine, die übersprungen werden soll, in ihrer Länge nicht verändert werden, ohne die andere Routine anzupassen. Solche Abhängigkeiten birgen immer die Gefahr, daß die notwendige Abänderung der zweiten Routine leicht vergessen oder übersehen werden kann, insbesondere wenn Unkundige das Programm ändern sollten. Solche 'riskanten' Programmiertechniken sollten nach Möglichkeit vermieden werden, um unnötige Fehlerquellen auszuschalten und das Programm auch für andere verständlich zu halten. Nach dem letzten Abschnitt für die Assembler-Freaks unter Ihnen, d.h. besser für diejenigen, die es werden wollen, (die richtigen 'Profis' haben diese Ergänzungen selbstverständlich nicht nötig), folgt jetzt eine kleine Zusammenfassung sowie die Konzeption der Befehle in Stichworten. Die Eigenschaften der Befehle für die Graphik-Fenster dürften klar sein, ebe-so wie für die »echten Fenster-Befehle«. Da bleiben schließlich für unsere Beschreibung noch die Kopier-Befehle. Dabei können Sie für alle Befehle genau festlegen, was diese eigentlich kopieren sollen. Sie können zwischen 3 Arten wählen: -a) alles -b) nur das, was nicht in INK 0 gezeichnet ist -c) nur eine bestimmte Farbe Somit können Sie Ihrer Kreativität freien Lauf lassen. Besonders positiv ist meiner Meinung nach Variante b, da in 99 % aller Fälle der Hintergrund (das 'Papier') in INK 0 dargestellt ist. Die Ausschaltung des 'Papiers' von dem Kopiervorgang bringt den Effekt, daß Bilder 'transparent' übereinander gelegt werden können und diese, falls Sie es wünschen, sich sogar logisch miteinander verknüpfen lassen. Letzteres können Sie durch Anwendung der Befehle für den Darstellungsmodus (FORCE, XOR, usw.; siehe Profi RSX — TEIL 1) erreichen. Ersteres läßt sich dagegen durch den LASSO-Befehl verwirklichen. Zusätzlich können Sie Bilder auch SPIE-GELn, sowohl in X- als auch in Y-Rich-tung und in beide zusammen. Hierzu brauchen Sie nur mit Hilfe des SPIEGEL-Befehls die Schalter ('FLAGs') für die gewünschte Version zu aktivieren. Danach gelten diese Definitionen für alle Graphik-Kopier-Befehle. Und falls Sie mit dem Platz, den Ihnen ein Bildschirm bietet, nicht auskommen, so lassen Sie sich alle Befehle auch zwischen 2 Bildschirmen anstellen, indem Sie den Befehlsnamen um das Kürzel SCR verlängern. Bitte beachten Sie jedoch bei der Anwendung aller Kopier-Befehle: — daß die Fenster-Grenzen nicht beachtet werden; — daß auch an den Bildschirmrändern nicht halt gemacht wird. Es wird dann an den entgegengesetzten Kanten weiterkopiert! Das war's dazu, eventuell aufkommende Fragen werden hoffentlich durch die Befehlsliste wieder im Keim erstickt. Da bleiben zum Schluß noch die Text-Kopierbefehle übrig, die bisher noch unerwähnt blieben. Hiermit können Sie Texte (natürlich auch Graphik!) kopieren, wobei diese Befehle an die Textdarstellung angepaßt worden sind. Es werden dort die Textkoordinaten (Spalten, Zeilen) verwendet. Da diese Befehle grundsätzlich Byte-orientiert arbeiten, sind diese erheblich schneller als die (Bit-or.) Graphik-Befehle. Sie haben allerdings den Nachteil, daß die Spiegel und Lasso-Funktionen nicht beachtet werden. Nach Abschluß dieses Beitrages kann ich mich morgen an Teil 3 begeben, während vor Ihnen das Warten auf die DATA-BOX oder das (leider mühselige) Abtippen des BASIC-Loaders liegt. Nachdem Sie den BASIC-Loader im Speicher Ihres Rechners haben, starten Sie diesen, indem Sie den BASIC-Speicher durch MEMORY 38575 herabsetzen. Anschließend sichern Sie den M-Code dann sofort auf Band (oder Scheibe). Zusätzlich müssen Sie den BASIC-Loader auf jeden Fall abspeichem, damit eventuell nicht bemerkte Tipp-Fehler korrigiert werden können. Den M-Code sollten Sie auf jeden Fall unter dem folgenden Namen speichern. SAVE“G2-464“,b,&96B0,&9F92-&96B0 Besitzer eines 664 bzw. 6128 ändern die Zeichenfolge »464« in »664« bzw. Danach setzen Sie den Rechner komplett zurück (durch CTRL-SHIFT-ESC). Falls Sie mit Profi RSX arbeiten möchten, so befolgen Sie beim Laden folgende Reihenfolge: MEMORY 38575 Wenn Sie sich an unsere Vorgaben halten, kann eigentlich nichts schiefgehen und Sie können schon Ihre ersten Programme mit Profi RSX schreiben (oder haben Sie schon letztes Mal losgelegt?!?). Wie wäre es z.B. mit einer Graphik-Verarbeitung mit 'echter' Fenster-Technik und zwei Bildschirmen? Auf jeden Fall nicht vergessen: Fortsetzung folgt! — in einem Monat.
Teil 2: Fenster- und Kopier-Befehle Mit den folgenden Befehlen ist es möglich, 8 Graphik-Fenster zu verwalten. Fenster-Nummern: 0 = bisheriges Graphik-Fenster; l-7=zusätzliche Graphik-Fenster. 18. RGW (,Graphik-Window NR. (0-7))
19. ORIGIN, G.W.-Nr. (, X-, Y-Origin) (,linke, rechte, obere, untere Ecke des Fensters)
20. GWINDOW, G.W.-Nr.
21. CLG (, G.W.-Nr.) (, Farbstift-Nr.)
22. GPEN (, G.W.-Nr.), INK-Nummer (0-15)
23. GPAPER »wie Pos. 22«
***TEXT-FENSTER BEFEHLE*** Mit den folgenden Befehlen ist es möglich, »ECHTE« Fenster zu verwalten. Bitte beachten Sie bei der Anwendung dieser Befehle:
24. WLAENGE, Fenstemummer (0-7), Adresse Integer Variable
25. WINDOW, Fensternummer
26. W.SET, Fenstemr., untere Speicherstelle
BITTE BEACHTEN: Bei einem Modewechsel ändert sich auch die benötigte Speicherplatzgröße. Die folgenden Befehle erlauben 2 Bildschirme gleichzeitig im Speicher.
27. SCREEN, Bildschirmnummer (, Flag (1 oder 0) für Sicht- oder Unsichtbar)
ACHTUNG: Ab sofort können Sie die Bildschirmausgaben nicht mehr verfolgen. Nützlich ist diese unsichtbare Ausgabe, wenn relativ aufwendige Ausgaben aufgebaut werden müssen, die aber erst nach Fertigstellung sichtbar werden sollen. 28. SWAP.ON (keine Parameter)
29. SWAP.OFF (keine Parameter)
***KOPIER BEFEHLE*** Teil 1: für Graphik-Bildschirm. Mit Hilfe dieser Befehle ist es möglich, innerhalb eines oder zwischen zwei Bildschirmen zu kopieren. Wahlweise können auch nur bestimmte Farben kopiert werden. Auch vergrößern und verkleinern ist möglich. Es sind spezielle Befehle für Text und Graphik vorhanden. In der Vielfalt, Komfort und in der Geschwindigkeit dürften diese Befehle einmalig sein. Sie dürften auch viele spezielle Graphikverarbeitungen übertreffen. Bitte beachten Sie:
30. COPY (, X-, Y-Koordinate Ausgangsrechteck), Anzahl der Kopierpunkte in X-, Y-Richtung, X-, Y-Koordinate Zielrechteck.
31. a) ZOOM, X-, Y-Faktor
32. SWAP »wie Pos. 30«
33. SPIEGEL, X-Schalter EIN/AUS, Y-Schalter EIN(1)/AUS(0)
34. LASSO, Schalter EIN(1)/AUS(0) (,Farbe)
Kopieren zwischen 2 Bildschirmen. Mit Hilfe der nachfolgenden 3 Befehle ist es zusätzlich möglich, diese Kopierarten auch zwischen zwei Bildschirmen auszuführen, sofern der zweite Bildschirm eingerichtet worden ist (siehe »SCREEN«), Die Befehlsnamen erhalten noch das »Anhängsel« SCR, außerdem muß noch ein weiterer Parameter hinzugefügt werden. Dieser Parameter definiert, welcher 35. COPYSCR »wie bei 'COPY' + Nummer des Ausgangsbildschirmes als letzten Parameter«. 36. ZOOMSCR »wie bei 'ZOOM' + Nummer des Ausgangsbildschirmes«. 37. SWAPSCR »wie bei 'SWAP + Nummer des Ausgangsbildschirmes«. Außerdem gibt es noch eine spezielle Version des COPYSCR-Befehls. Dieser kopiert den gesamten Bildschirm in einen anderen. Als Parameter muß hier nur die Nummer des Ausgangsbildschirmes angegeben werden. Die Syntax lautet also so: COPYSCR, Nummer des Ausgangsbildschirmes. Teil 2: für Text-Bildschirm. Diese Kopierbefehle sind speziell für die Text-Darstellungen gedacht. Sie arbeiten, anders als die vorher genannten Befehle, Byteorientiert und sind somit erheblich schneller. Als Koordinaten müssen die normalen Text-Koordinaten verwendet werden. 38. TCOPY, Zeile-, Spalte-Ausgangsfeld, Zeile-, Spalte-Zielfeld, X-, Y-Ausdehnung in Zeichen.
39. TSWAP »wie bei Pos. 38«
40. TSCOPY, Zeile-, Spalte-Aus-gangsfeld, Zeile-, Spalte-Zielfeld, X-, Y-Ausdehnung, Nummer des Ausgangsbildschirms.
41. SSWAP »wie bei Pos. 40«
ACHTUNG: Bei den Text-Kopierbefehlen werden die Spiegel- und Lasso-Funktionen nicht beachtet.
|