CODINGLISTINGS ★ BIGTYPE (SCHNEIDER AKTIV) ★

Bigtype (Schneider Aktiv)Coding Listings
★ 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 ★ 

BASIC-TRICKKISTE

Die CPC-Serie verfügt über ein ausgeklügeltes Betriebssystem, in dem ungeahnte Fähigkeiten schlummern. Diese können auch vom BASIC ausgeschöpft werden, wobei das Handbuch nur spärlich Hilfestellung leistet. Aber zum Glück gibt es ja SCHNEIDER AKTIV, das dieses Manko wieder ausbügelt.

TRICKREICHE ZEICHEN!

Der CPC-Zeichensatz ist schon etwas Feines: glatte 256 Zeichen stellt er uns zur Verfügung. Moment 'mal, werden Sie sagen, was ist denn mit den Steuerzeichen CHRS(O) bis CHRS(31)? Nun, deren Bedeutung liegt war eher in der Funktion als Quasi-Befehle, aber auch ihnen sind Symbole zugeordnet, die mit CHRS(l) sichtbar gemacht werden können. Geben Sie z.B. PRINT CHR$(1)+CHR$(7) ein und Sie werden ein wohl die ,Klingel' symbolisierendes Zeichen zu Gesicht bekommen. Nebenbei, wenn Ihnen die CHR$-Tipperei zu lästig ist — eben diese Symbole sind über die CTRL-Taste erreichbar und erfüllen, in Anführungszeichen bzw. in einen String gefaßt, dieselbe Funktion wie ihre CHRS-Pendants. Hierbei liegt CHR$(1)-CHR$(26) in Zusammenhang mit CTRL auf den Tasten A—Z und CHR$(27) —CHR$(31) auf den Tasten (eckige Klammer auf), (ganzzahlige Division), (eckige Klammer zu), (Po-tenz-Pfeil) und (0). Das obige Beispiel könnte also auch mit PRINT “(CTRL+A) (CTRL+G)“ geschrieben werden oder — was sinnvoller ist — PRINT CHRS(7) kann durch PRINT ‘(CTRL+G)“ ersetzt werden.

Aber damit ist der CPC-Komfort noch lange nicht erschöpft — schließlich kann der Zeichensatz beliebig umdefiniert werden. Hierbei beginnt alles mit dem SYMBOL AFTER-Befehl, über dessen Sinn Sie sich vielleicht schon 'mal Gedanken gemacht haben. Der CPC braucht nämlich einen Hinweis darüber, welche seiner Zeichen, die allesamt im ROM stehen und damit unveränderlich sind, Ihnen nicht gefallen und zur Bearbeitung zur Verfügung gestellt werden müssen. Mit dem besagten Belehl sorgen Sie dafür, daß alle ab der angegebe-nenen Zeichen-Nummer liegenden Zeichen "an das obere Ende des verfügbaren RAM's kopiert werden. Damit dieser Bereich vor unbefugten Eingriffen geschützt ist, wird die Obergrenze- des verfügbaren BASIC-Speichers nach unten verlagert. Diese Grenze können Sie auch ,von Hand1 mit MEMORY XXXXX verschieben und mit PRINT HIMEM abliagen. Beim Einschalten des CPC wird übrigens automatisch ein SYMBOL AFTER 250 durchgeführt, so daß Ihnen standardmäßig 16 Zeichen zur Abänderung zur Verfügung stehen. Da alle weiteren SYMBOL AFTER-Befehie ihre Kopieraktion an diesem, von vornherein abgesteckten Bereich orientieren, kommt es leider zu einer Unverträglichkeit, genauer zu einem IMPROPER ARGUMENT, wenn zwischenzeitlich mit MEMORY der RAM-TOP herabgesetzt wird und anschließend ein SYMBOL AFTER erfolgt. Die .frisch* ins RAM kopierten Zeichen könnten nämlich ein -— vermeintlich mit MEMORY geschütztes — Maschinencode-Programm überschreiben und das wäre nicht ,im Sinne des Erfinders ...‘

Benötigen Sie keine ,eigenen Zeichen, legen aber Wert auf etwas mehr Speicherplatz, können Sie mit SYMBOL AFTER 256 das RAM aufräumen und alle SYMBOL's hinaus werfen. Danach wird übrigens auch, einem vorangegangenen MEMORY-Befehl zum Trotz, ein nachfolgender SYMBOL AFTER ohne Aufstand akzeptiert, da nun unterhalb des geschützten Bereiches kopiert wird und nicht mitten hinein!

Nun aber zurück zu den im RAM ,schlummernden1 SYMBOL's. Jedes Zeichen besteht aus einer Matrix von 8 Zeilen mit je 8 — gesetzten oder nicht gesetzten — Punkten. Damit kann die Information in 8 Bytes mit je 8 Bits abgelegt werden - jede Matrixzeile .verschlingt1 also genau ein Byte. Schreibt man in dieses Byte den Binär-Wert 1000000 (dezimal: 128), entspricht das in der Matrixzeile einem gesetzten Punkt ganz links. Ein Binär-Wert von 10000001 (dezimal: 129) entspricht zwei gesetzten Eckpunkten usw. Die Matrixzeilen werden nun in der Reihenfolge von oben nach unten in 8 hintereinanderliegenden Bytes abgelegt und können mit dem SYMBOL-Befehl mit den gewünschten Werten beschrieben werden. Ein etwas ,holperiges1 Verfahren zwar, aber es gibt ja bequeme Editor-Programme, die einem viel Rechenarbeit abnehmen.

Etwas trickreicher ist die direkte Manipulation der Symbol-Information, die ja — wie erläutert — in Achter-Paketen direkt oberhalb vom RAMTOP liegt. Noch 'mal zur Verdeutlichung: nach einem SYMBOL AFTER 32-Befehl finden wir die Information von CHR$(32) in den Adressen HIMEM+1 bis HIMEM+8, CHR$(33) in den Adressen HIMEM +9 bis HIMEM+16 usw. In diesen Bereich kann nun direkt eingegriffen und interessante Möglichkeiten eröffnet werden. So sorgt das folgende Programm für doppelt hohe Zeichen, die durch direktes Tippen auf den Bildschirm gebracht werden können:

Ein bißchen Schummelei ist ja schon dabei: Doppelt so hoch sind die Zeichen natürlich nicht — sie werden vielmehr als solche zusammengesetzt. In den Zeilen 120—250 wird zuerst die Information der Zeichen 32—127 ausgelesen. Anschließend wird jede Matrixzeile verdoppelt und der obere Teil des neuen 8-Zzeilen-Zeichens unter der ursprünglichen Zeichen-Nummer abgelegt. Der untere Teil wird in die zweite Hälfte des RAM-Zeichensatzes ab Zeichen 128 geschrieben. In den Zeilen 340-390 wird die Tastatur abgefragt und eS entsprechend gefüllt. Danach wird in der Zeile 500 der obere Teil des in e$ enthaltenen Zeichens ausgegeben und — mittels der Cursor-Steuerzeichen CHR$(8)-CHR$(11) - der um 96 Zeichen-Nummern verschobene, untere Teil ,unten angeklebt'.

Der Clou ist nun der in den Zeilen 540—650 enthaltene ,Umschalter*. Der CPC 464 merkt sich nämlich in der Speicherzelle *B295 (CPC 664/6128: &B735), ob im RAM Zeichensymbole stehen, auf die er zurückgreifen soll. Wenn ja, steht hier der Wert 255, wenn nicht, steht hier eine 0. Dieser faszinierende Sachverhalt erlaubt es, daß man sowohl den ursprünglichen ROM-Zeichensatz verwenden kann (man schreibt in die Merkzelle eine 0) wie auch den umdefinierten RAM-Zeichensatz (man poke't den Wert 255). So kann in unserem Programm jederzeit mit SHIFT+“,“ (=Kleiner) auf Normalausgabe und mit SHIFT+“.“(=größer) auf Großausgabe und umgekehrt geschaltet werden. Dieser Umstand ist auch beim LISTen recht behilflich und kommt deswegen auch in der BREAK-Behandlung zum Tragen.

Um die Annäherung an ein Minimal-Textsystem zu schaffen, wird zudem die ENTER-Taste = CHR$(13) abgefragt, um einen Sprung an den nächsten Zeilenanfang zu ermöglichen. Wenn Sie dieses Programm an den Rand der Nützlichkeit heranführen wollen, so sit Ihre SCHNEIDER AKTIVität gefragt:

— Zuerst müßte eine Hardcopy-Routine (davon gibt's schließlich genug) eingebaut und durch eine entsprechende Ergänzung in der Tastatur-Ab frage abrufbar gemacht werden.
— wünschenswert wäre der Einbau eines sichtbaren Cursors und, für Ehrgeizige, der einer Editier-Möglichkeit.
— schließlich sollte der Bildschirm-MODE wählbar sein und die Texthinweise der Zeilen 300—320 und 620 in einem (löschbaren) Help-WINDOW stattfinden.

Wenn Sie das alles schaffen, sollten Sie sich mit dem neuen Programm als erstes ein stilgerechtes Pro-grammier-Diplom ausstellen ...

SA

★ PUBLISHER: Schneider Aktiv
★ YEAR: 1986
★ LiCENCE: LISTING
★ COLLECTION: SCHNEIDER AKTIV 1986
★ AUTHOR: Olav Pankow
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Bigtype    (Schneider  Aktiv)    GERMANDATE: 2021-06-12
DL: 163
TYPE: ZIP
SiZE: 4Ko
NOTE: Dumped by Johnny Farragut ; 40 Cyls
.HFE: Χ

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

Lien(s):
» Coding Src's » RAMTEST and MACHINE TYPE routine (CPC Attack)
Je participe au site:
» Vous avez des infos personnel ?
» 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 673 millisecondes et consultée 633 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.