text: CPCRULEZ > AMSTRAD CPC > APPLICATIONS > DIVERS > Sonderzeichen für CP/M
  ★ APPLICATIONS ★ DIVERS ★ Sonderzeichen für CP/M ★
  Sonderzeichen für CP/M (CPC Magazin) Applications Divers
  CP/M kennt leider keine SYMBOL-Funktion. Deshalb gibt es für Umlaute und alle sonstigen Sonderzeichen, die im amerikanischen Zeichenstandard ASCII nicht Vorkommen, keine allgemein gültige Möglichkeit zur Darstellung dieser Zeichen. Zwar kann die Tastatur auf die DIN-Bele-gung umgestellt werden. Der Drucker gibt dann sogar wunschgemäß ä ö und ü aus, auf dem Bildschirm erscheinen aber nach wie vor die ASCII-Zeichen. Programme wie Texpack oder Wordstar von Markt & Technik haben nun auch die richtige Bildschirmausgabe, weigern sich aber, diese Eigenschaft auch anderen Programmen zugänglich zu machen.
  Veröffentlichungen dazu (Happy Computer 12/85, c't 4/ 86) geben eine programmunabhängige Lösung bisher nur für den CPC 464. Da dies dann auch wieder nicht mit dem größeren CP/M der vortex-Speichererweiterung funktionierte, wurde das hier vorgestellte DIN-Programm als Universallösung für alle CPC-Typen und alle CP/M-Versionen entwickelt. Dabei wurden die Vorschläge aus der c't übernommen, als sicheren Platz für die SYMBOL-Tabelle den SOUND-Buffer zu verwenden (es gibt kaum einen anderen Platz) und die CURSOR-Tasten wie bei Wordstar zu belegen. Diese Ziele werden aber auf einem grundsätzlich anderen Weg erreicht. Als einzige Übereinstimmung zu dem c't-Programm wird man einen Maschinenspracheteii zur schnelleren Bildschirmausgabe finden. Dabei handelt es sich, um allen Mißverständnissen vorzubeugen, um eine Standardroutine, die in ähnlicher Form u.a. auch schon in Schneider aktiv 2/86 abgedruckt war.
  Der Trick des vorliegenden Programms beruht nun darauf, daß alle notwendigen Maßnahmen nicht in der CP/M-Umgebung, sondern bereits in Basic getroffen werden. Damit kann diese Möglichkeit auch von denjenigen angewendet werden, die nicht das Talent haben, COM-Programme zu erzeugen. Das CP/M braucht (und sollte) nicht verändert werden. Es kann also das Standard-CP/M mit der ASCII-Tastenbelegung auch für diese Zwecke verwendet werden, was sicherlich die Übersichtlichkeit der Diskettensammlung fördert, da nicht mehr soviele Unterschiede zwischen verschieden installierten CP/Ms zu beachten sind. Die Anwendung ist nun supereinfach. Das DIN-Programm muß als einfaches Basicprogramm (ein Maschinenspracheteil ist in DATA-Zeilen integriert) zusätzlich auf der Diskette stehen. Das DIN-CP/M wird dann mit RUN "DIN" gestartet, das ASCII-CP/M erhält man wie gewohnt mit dem Befehl CPM.
  Das DIN-Programm ist darauf abgestimmt, z.B. ein "wildes" Wordstar für eine deutsche Textverarbeitung fit zu machen. Mit geringfügigen Änderungen ergeben sich noch weitere Einsatzmöglichkeiten. Eine Teilwirkung von DIN ist eine beschleunigte Textausgabe, die auch für ein ASCII-CP/M zur Verfügung steht, wenn in der Programmzeile 1 dinflag = 0 eingesetzt wird. Die schnelle Textausgabe setzt MODE 2 voraus. Wer auch in CP/M den augenschonenden MODE 1 verwenden will, kann mit fastflag = 0 auf Tempo verzichten und diese Möglichkeit wieder hersteilen. Falls auch die Belegung der CURSOR-Tasten unerwünscht ist, hilft wordstarflag = 0. In diesem Sinne ist es auch denkbar, für weitere Anwendungsfälle Programmteile einzufügen, die über zusätzliche Flags (z.B. auch über eine INPUT-An-weisung) gesteuert werden.
  Deutscher Zeichensatz und Fast-Ausgabe können übrigens auch für Basic oder andere Programmiersprachen aenutzt werden. Man muß dann nur den CPM-Befehl in Zeile 300 durch END (bzw. z.B. RUN "FORTH) ersetzen. Mur Musik darf der CPC dann nicht mehr machen, denn wie schon erwähnt, wird ja der SOUND-Buffer verwendet.
  Eine weniger auffällige Aufgabe des DIN-Programmes besteht darin, festzustellen, welcher CPC gerade vorliegt, um ein dazu passendes Maschinenprogramm zu erzeugen. Theoretisch kann in das Programm auch ein JOYCE-Test eingebaut werden. Es gibt aber noch keine ausreichenden Informationen, ob die Grundkonzeption von DIN überhaupt auf die JOYCE-Computer übertragbar ist.
  Das Maschinenprogramm befindet sich in Zeile 350, in 360 sind die Bitmuster der Sonderzeichen enthalten. Es handelt sich um die gleichen Werte (hier hexadezimal), die im Basicbefehl SYMBOL eingesetzt werden müssen. Wer den Zeichen ein anderes Aussehen geben möchte, braucht nur die Zeile 360 zu ändern. Es gehören jeweils 8 Werte zusammen nacheinanderzu den Zeichen: §, Ä, Ö, 0, Pfeil, ä, ö, ü, ß. Der Pfeil ist in Basic das Potenzierungszeichen, für CP/M (und auf dem Drucker) wird häufig nur ein "Dach" dargestellt. Im Interesse der besseren Lesbarkeit wurde es bei dem Pfeil belassen.
  Die Zeichen entsprechen in der genannten Reihenfolge diesen hexadezimalen ASCII-Werten: 40, 5B, 5C, 5D, 5E, 7B, 7C, 7D, 7E und zusätzlich den Werten F7 bis FF, damit eine Kompatibilität mit Wordstar von Markt & Technik besteht. Die Tastenbelegung erfoigt in den Zeilen 160 und 170. Falls von CP/M ebenfalls Tastatureinträge vorgenommen werden, sind diese "gültiger", da sie erst später kommen. Bei Problemen sollte man also in dieser Richtung suchen und im Zweifel ein CP/M im Grundzustand verwenden.
  Es handelt sich um eine "echte" DIN-Belegung. Im Unterschied zu anderen "DIN"-Tastaturen befindet sich das Häkchen (das Auslassungszeichen) ganz rechts über dem Kreuz (#), wo im Grundzustand eine eckige Klammer ist. Die beiden nicht vorgesehenen Tasten sind wie häufig üblich sinnvoll belegt: Die Taste über CTRL bekommt das Kleiner- und Größer-Zeichen, die Taste mit dem Pfeil behält diesen, und das Pfund-Zeichen wird durch das zweite Häkchen ersetzt. Häufig werden beide Häkchen auf die Pfeil-
  Taste gelegt, denn auf vielen Schreibmaschinen befinden sich dort Akzent-Zeichen. Deren Funktion, ein bestehendes Zeichen zu ergänzen, kann aber vom Rechner mit den vorhandenen Mitteln (das Problem besteht ja ebenso auch für den Drucker) nicht erfüllt werden. Im übrigen kann man die Tastenbelegung mit den KEY DEF-Befehlen nach eigenem Geschmack beliebig umgestalten.
  Die Tastenwerte, die zusammen mit CTRL erzeugt werden, bleiben unverändert. Wer häufig mit den Steuerzeichen arbeiten will, kann die KEY DEF-Befehle ergänzen. Dazu muß nur der gewünschte Wert (in der Regel null) zusätzlich angefügt werden. Die weitestgehenden Gestaltungsmöglichkeiten befinden sich in den Zeilen 210-230. In Zeile 210 werden die CURSOR-Tasten COPY, CLR, TAB, ESC auf geeignete Werte bzw. auf Erweiterungswerte gesetzt. In Zeile 220 werden die dazugehörigen Erweiterungsstrings definiert. Wer dafür eigene Steuerzeichen eintragen will, muß hauptsächlich herausfinden, welche Werte die in den Programmhandbüchern angegebenen Steuerzeichen haben. Man muß also nachschlagen, welchen Wert eine über einen Buchstaben definierte Taste auf der CTRL-Ebene hat. Bei CTRL-E ist das beispielsweise 5.
  Eine Besonderheit, die zu beachten ist, entsteht durch einen Fehler im Betriebssystem des CPC, der in dem Artikel in c't aufgedeckt wurde. Soll ein Erweiterungsstring länger als zwei Zeichen sein, und beginnt er mit einem Steuerzeichen, so wird das zweite Zeichen "verschluckt"; es muß als Abhilfe eine Null eingefügt werden. In Zeile 220 erscheint deshalb am Schluß +CHR$(0). Die Zeile 230 stellt einen Vorschlag dar und kann im Normalfall weggelassen werden. Es kann ja wünschenswert sein, auch den Ziffernblock mit weiteren Steuerzeichen zu belegen. Zeile 230 zeigt, wie diese Tasten auf der Grundebene weiter die Ziffern ausgeben (wie sonst auch ohne Wiederholungsfunktion), auf SHIFT- und CTRL-Ebene enthalten sie die Erweiterungszeichen 80 bis 8A, die ursprünglich auch die Ziffern enthalten, bis sie mit weiteren KEY-Befehlen mit neuen Strings versehen werden. Angesichts der unterschiedlichen Ansprüche wurden dazu keine Vorschläge in das DIN-Programm aufgenommen.
  Als Hilfe für eine eigene Gestaltung der Tastatur mag die Abbildung dienen. Sie faßt Informationen zusammen, die in den Handbüchern über mehrere Seiten verstreut sind. Dabei befinden sich innerhalb eines Tastenkästchens ganz links die Tastennummer (dezimal), daneben von unten nach oben die erzeugten Tastenwerte (hexadezimal) auf der Normal-, SHIFT- und CTRL-Ebene und rechts daneben jeweils die zugehörigen Bildschirmzeichen. Es handelt sich um die Standardbelegung beim 464. Zu berücksichtigen ist, daß es sich zunächst um reine Tastaturwerte handelt, die zwar meistens mit den ASCII-Werten gleichbedeutend sind, aber gelegentlich auch unmittelbar ausgeführt werden, wie etwa 7F (DEL) oder die Werte ab E0.