APPLICATIONSPROGRAMMATION ★ Bildschirm de Luxe ★

Bildschirm de Luxe (Happy Computer)Applications Programmation
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Unterstreichen, Fett- und Kursivschrift und manche Hervorhebung mehr kann der Schneider im 80-Zeichen-Nlodus. Daß sich die Ausgabegeschwindigkeit dabei noch nahezu verdoppelt, fällt fast gar nicht mehr auf.

Wie Sie wahrscheinlich längst wissen, heißt der Teil im Betriebssystem, der die Zeilenausgabe steuert, »TEXT SCREEN«. Und diese Routine kann sehr viel: Verwalten von acht Bildschirmfenstern, drei Schriftbreiten (Modus 0 bis 2), Ausfuhren von Steuerzeichen (CHR$( = ) bis CHR$(31)}, Darstellung des Cursors, Verwalten der Farben, transparenter Schreibmodus und natürlich die Zeichenausgabe auf dem Bildschirm, um nur die wichtigsten aufzuzählen. Es gibt aber auch einige Unzulänglichkeiten, und die sollen natürlich nicht verschwiegen werden.

Da ist einmal die sehr langsame Zeichenausgabe auf dem Bildschirm. Geben Sie einmal das kleine Programm aus Listing 1 ein.

Nach dem Start füllt sich der gesamte Bildschirm mit dem Buchstaben »a« und anschließend wird die dafür benötigte Zeit ausgegeben. Da uns nur die Zeit der reinen Zeichenausgabe interessiert, muß man von der im Programm ermittelten Zeit den Betrag abziehen, den das Programm zur Ausgabe von Leerstrings (a$ = " *) benötigt. Diese Zeit erhalten wir, wenn wir Listing 2 laufen lassen. In Zeile 80 wird deshalb der Betrag 0,146666667 abgezogen.

Das Beschreiben des Bildschirms mit Zeichen - es ist übrigens egal, mit welchem Zeichen der Schirm beschrieben wird - dauert also etwa 3.29 Sekunden. Mit dem gleichen Programm messen wir nachher die Zeit, die das Beschreiben des Bildschirms benötigt, nachdem die Routine TEXT SCREEN geändert wurde.

Der Hauptgrund für diesen ziemlich hohen Zeitaufwand liegt bei den drei verschiedenen Schriftbreiten. Die Zeichenausgaberoutine des Betriebssystems muß natürlich so konzipiert sein, daß sie allen drei Modi gerecht wird. Dies beinhaltet dann für den Modus 2 (80 Zeichen) eine Unzahl überflüssiger Berechnungen. Zumindest in diesem Modus kann man die Zeichenausgabe erheblich beschleunigen. Und wenn wir schon eine neue Ausgaberoutine schreiben, dann soll sie auch noch mehr können.

Erweitern wir TEXT SCREEN im Modus 2 also um folgende Funktionen:

  • Bildschirmausgabe beschleunigen
  • Unterstreichen
  • Fettschrift
  • Kursivschrift
  • Durchstreichen
  • Durch-x-en auf dem Bildschirm

Die Modi 0 und 1 sollen unverändert funktionieren.

Die Hervorhebungen (Unterstreichen, Fettschrift und so weiter) werden am geschicktesten mittels Bildschirmsteuerzeichen ein- und ausgeschaltet. Hier bietet sich das noch unbelegte Steuerzeichen CHR$(27) an. Mit einem Parameter, der CHR$(27) folgt, wird die Hervorhebungsart bestimmt und in Flip-Flop-Manier ein- und ausgeschaltet.

Im allgemeinen ruft die Routine TXT OUT ACTION (ein Programmteil des Betriebssystems beziehungsweise des TEXT SCREEN) den TEXT SCREEN auf. Das Programm (zum Beispiel der Basic-Interpreter beim PRINT-Befehl) übergibt im A-Register des Z80 den ASCII-Wert des auszugebenden Zei-
chens. Taucht hier ein Wert kleiner oder gleich 31 auf, so »weiß« der TEXT SCREEN, daß ein Steuerzeichen vorliegt. Er verzweigt in einen Programmabschnitt, der Steuerzeichen bearbeitet.

Für jedes Steuerzeichen liegt ln einer Tabelle (die vom Betriebssystem beim Initialisieren im RAM angelegt wird) ein 3-Byte-Wert vor, der die weitere Verarbeitung bestimmt.

Das erste Byte besagt, wieviele folgende Ausgabezeichen (entsprechend der Zahl der Aufrufe von TXT OUT ACTION) als Parameter des Steuerzeichens zu interpretieren sind. Auch wenn diese Zeichen nun einen ASCII-Wert größer 31 haben, werden sie nicht ausgegeben, sondern bis zum Erreichen der benötigten Gesamtzahl der Parameter zwischengespeichert. Die anderen beiden Byte geben die Adresse der Routine an, die die Funktion des Steuerzeichens ausführt. Ihr Aufruf erfolgt automatisch, sobald der TEXT SCREEN alle benötigten Parameter »gesammelt« hat. Nach dem Ende der Routine werden die folgenden Zeichen - sofern es sich nicht wieder um Steuerzeichen handelt - normal auf dem Bildschirm ausgegeben.

Ursprünglich sind für CHR$(27) 0 Parameter sowie eine direkte Rückkehradresse eingetragen. Mit anderen Worten, CHR$(27) hat keine Funktion. Setzen wir nun in die Tabelle eine 1 sowie die Adresse unseres Programmes ein, kann der folgende Parameter ausgewertet und zum Ein- beziehungsweise Ausschalten von Hervorhebungsarten benutzt werden.

Zusammen mit einer neuen Textausgaberoutine (genauer einer neuen Routine für TXT WRITE CHAR des TEXT SCREEN, die für die Darstellung eines Zeichens auf dem Bildschirm verantwortlich ist), die in Modus 2 sowohl eine Beschleunigung der Bildschirmausgabe bewirkt, sowie für eine Darstellung der jeweils eingeschalteten Hervorhebungsarten sorgt, ist die Erweiterung des TEXT SCREEN komplett.

Das Assemblerprogramm mit diesen Funktionen finden Sie in Listing 3, den entsprechenden Basic-Lader in Listing 4. Nachdem das Programm mit »CALL &A000« initialisiert wurde, steht der erweiterte TEXT SCREEN bis zum Ausschalten des Computers zur Verfügung.

Lassen Sie nun nach der Initialisierung der Erweiterung das obige Zeitmeßprogramm erneut laufen. Die Geschwindigkeitserhöhung ist unmittelbar zu verfolgen. Man benötigt lediglich noch 1.89 Sekunden zum Beschreiben des gesamten Bildschirmes, Das entspricht einer Beschleunigung um etwas mehr als 40 Prozent.

Die einzelnen Hervorhebungsarten werden mit

  • PRINT CHR$(27);CHR$(1)
    Unterstreichen ein/aus
  • PRINT CHR$(27);CHR$(2)
    Fettschrift ein/aus
  • PRINT CHR$(27);CHR$(3)
    Kursivschrift ein/aus
  • PRINT CHR$(27);CHR$(4)
    Inverse Darstellung ein/aus
  • PRINT CHR$(27);CHR$(5)
    Durchstreichen ein/aus
  • PRINT CHR$(27);CHR$(6)
    Überstreichen ein/aus
  • PRINT CHR$(27);CHR$(7)
    Durch-x-en ein/aus ein- beziehungsweise ausgeschaltet.

Die Zeichenfolge CHR$(27);CHR$(x) kann natürlich auch ein String enthalten. Zur Demonstration dient Listing 5.

Es ist auch möglich, mehr als eine Hervorhebungsart gleichzeitig zu aktivieren, so zum Beispiel Fettschrift und Unterstreichen oder jede andere beliebige Kombination. Nur Fett- und Kursivschrift heben sich gegenseitig auf.

Unsere Routine sieht eine Funktion zum Blockieren von Änderungen der Hervorhebungsart vor. Nach der Eingabe von

PRINT CHR$(27);CHR$(0)

werden alle folgenden Änderungskommandos ignoriert. Das heißt, der Zustand, der zu diesem Zeitpunkt vorliegt (beispielsweise Unterstreichen und inverse Darstellung) bleibt erhalten. Um diesen Zustand wieder aufzuheben, ist die Eingabe eines Parameters mit einem Wert größer als 127 nötig, also zum Beispiel

PRINT CHR$(27);CHR$(128)

Nun werden alle Veränderungen der Hervorhebungsart wieder bearbeitet.

Das Assemblerprogramm ist folgendermaßen aufgebaut. Zunächst werden - da man tunlichst nur über die vorgegebenen Vektoren Betriebssystemroutinen aufrufen soll - die entsprechenden Restarts der Vektoren in Aufrufe umgewandelt. Dies funktioniert problemlos, weil die erforderliche Speicherkonfiguration bereits vor dem Aufruf unseres Programms eingestellt ist.

Die Vektoren enthalten einen Restart-Befehl, gefolgt von einer Startadresse im Betriebssystem. Daß bei dieser Adresse das siebte Bit gesetzt ist, hat etwas mit dem angewählten ROM zu tun und braucht uns hier nicht weiter zu interessieren. Der Restart schaltet nun die Speicherkonfiguration um, so daß die in den beiden obersten Bits angewählte ROM-Adresse aktiviert wird. Der Aufruf erfolgt dann im richtigen Speicherbereich. Das ist notwendig, damit die Vektoren von jeder beliebigen Speicherkonfiguration aus funktionsfähig sind.

Da unser Assemblerprogramm, wenn es initialisiert ist, nur vom TEXT SCREEN aus aufgerufen wird, ist immer gewährleistet, daß das untere ROM eingeschaltet ist. Die Umkonfiguration des Speichers mit einem Restart gestaltet sich sehr zeitaufwendig. Ein einfacher Aufruf hingegen ist erheblich schneller.

Das Programm kopiert also die hinter den Restarts der Vektoren stehenden Startadressen (nachdem Bit 7 zurückgesetzt wurde). Somit ist auch die Kompatibilität zu anderen Betriebssystemen (CPC 464, 664 und 6128 haben unterschiedliche Betriebssysteme) gewahrt. Nach dem Kopieren wird der Vektor für TXT WRITE CHAR auf den entsprechenden Startpunkt im Programm gesetzt und die Tabelle für die Steuerzeichen abgeändert. Im folgenden steht die Ersatzroutine für TXT WRITE CH AR und das Programm zur Behandlung der Steuerzeichen.

Die Hervorhebungsarten werden im wesentlichen innerhalb des Assemblerprogramms erklärt. Fettschrift beziehungsweise Kursivschrift entsteht dadurch, daß das Bitmuster der Buchstaben jeweils um ein Bit verschoben und anschließend mit dem Originalmuster OR- (Fettschrift) beziehungsweise AND-verknüpft (Kursivschrift) wird. Dadurch erscheint die Schrift auf dem Bildschirm fett und heller beziehungsweise schlank und dunkler als normal.

Matthias Engelbach/hg , HC

★ PUBLISHER: Happy Computer
★ YEAR: 1986
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: HAPPY COMPUTER-SCHNEIDER SONDERHEFT
★ AUTHOR: Matthias Engelbach
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» Bildschirm  de  Luxe    (Happy  Computer-Sonderheft)    GERMANDATE: 2021-03-11
DL: 159
TYPE: ZIP
SiZE: 4Ko
NOTE: 40 Cyls
.HFE: Χ

» Bildschirm  de  Luxe    (Happy  Computer-Sonderheft)    LISTING    GERMANDATE: 2021-03-11
DL: 183
TYPE: PDF
SiZE: 1702Ko
NOTE: 5 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Static Liner
» Applications » Statistiques (CPC Revue)
» Applications » Statistics Program (Computing Today)
» Applications » Statistics
» Applications » CPC I.L.M.F Statistik (GSS Verlag)
» Applications » Staticad (CPC Amstrad International)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 548 millisecondes et consultée 757 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.