APPLICATIONSDIVERS ★ Tastatur-Programmierung ★

RSX Taste (CPC Magazin)Applications Divers
★ 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 ★ 

Oft sind bestimmte Befehle oder Kommandos zur Bearbeitung eines Programms nötig. Man tippt dann z.B. tausendmal GOTO 7358, LIST 1120-, MODE 2 oder ähnliches ein. Besonders schwierig wird es, wenn man blind INK 0,1: INK 1,24: PEN 1: PAPER 0 eingeben muß, weil plötzlich keine Schrift mehr sichtbar ist. Es wäre nun einfach, diese Funktionen mit KEY... auf eine Taste des Zehnerblocks zu legen; damit ginge aber dessen ursprüngliche Funktion verloren. Außerdem vergißt man die neue Tastenbelegung schnell. Schön wäre es, wenn sich jeder Befehl mit seinem Anfangsbuchstaben aufrufen ließe, also z.B. LIST mit CTRL + L, RUN mit CTRL + R usw.

Ein entsprechendes Programm habe ich erst in Basic (12 KByte), dann in MC (1 KByte) geschrieben. Es stellt vier RSX-Befehle bereit: |TASTE, |T.AN, |T.AUS und |LISTEXP.

|TASTE

Diese Anweisung dient dazu, eine beliebige Taste mit einer Funktion zu belegen. Hat man sie ohne Parameter aufgerufen, folgt die Aufforderung, die gewünschte Taste zu drücken. Anschließend fragt das Programm, welche Ebene geändert werden soll (CTRL, SHIFT, Normal). Jetzt kommt die Eingabe des Textes. Dazu tippt man ihn einfach ohne Anführungszeichen, CHR$ (..) oder Variablenzuweisungen ein.

Umfaßt der Text nur ein Zeichen, erhält die Taste die Zuordnung KEY DEF. Dadurch wird weder Platz im Expansions-String-Speicher noch eine der 32 Expansionstasten (KEY 128 - KEY 159) belegt. Diese Änderung läßt sich nicht mit |LISTEXP anzeigen. Bei Eingabe eines längeren Textes wird der Taste in der entsprechenden Ebene eine freie Expansionstaste und dieser der Text zugewiesen. Dabei ist zu beachten, daß nur 32 Tasten eine Funktion erhalten dürfen. Andernfalls meldet das Programm einen Fehler ("Alle Tasten belegt”). Hatte die Taste bereits eine Funktion, so wird diese gelöscht.

Möchte man eine Taste ganz löschen, ist kein Text einzugeben. So wird die ausgewählte Ebene der Taste zurückgesetzt und eine eventuell benutzte Expansionstaste freigegeben. Unterläuft beim Eintippen ein Fehler, verläßt man mit ESC das Programm ohne Änderung. Alle beschriebenen Möglichkeiten lassen sich auch ohne Direkteingabe vom Benutzer verwenden. Dazu müssen die benötigten Parameter nur hinter den Befehl gehängt werden. So ist es möglich, eine Taste zu löschen, indem man zwei Parameter angibt:

|TASTE, < Tasten-Nr. >, < Ebene >

Ebene 0 = Normal; 1 = SHIFT; 2 = CTRL
Ebenso läßt sich eine Taste definieren. Dabei gilt folgende Syntax:

|TASTE, < Tasten-Nr. >, < Ebene >, @text$
text$ muß zuvor definiert sein.

Zu erwähnen ist noch, daß man auch die SHIFT-Ebene eines Buchstabens mit einer Funktion belegen kann, ohne daß es dadurch unmöglich wird, diesen in Großschreibweise zu verwenden. Alle Großbuchstaben lassen sich mit CAPS LOCK erreichen, auch wenn die SHIFT-Ebene eine andere Funktion hat.

|T.AN / |T.AUS

Normalerweise besitzt der Rechner 151 Byte Expansions-String-Speicher. Diéser Platz ist schon sehr schnell aufgebraucht. Mit |T.AN läßt sich ein erweiterter Expansions-String-Speicher einschalten. Dieser liegt im Sound-Buffer und ist 412 Byte lang. Daraus ergibt sich aber, daß im Programm keine SOUND-Kommandos Vorkommen dürfen.

|T.AUS bringt den normalen Speicher in Betrieb. Um die normale Funktion der Tasten wiederherzustellen, wird

gleichzeitig auf die ROM-Tastaturtabelle umgeschaitet. Nun kann man mit KEY... (wie gewohnt) oder mit. |TASTE den Zehnerblock belegen. KEY DEF ... funktioniert nicht bei inaktiver Expansions-String-Erweiterung. Insgesamt stehen dem Anwender damit 45 frei definierbare Tasten zur Verfügung.

|LISTEXP

Dieser Befehl bringt alle belegten Expansionstasten zur Anzeige. Er soll nur im Mode 2 angewendet werden.

Zum Programm

Der Basic-Lader lädt den MC direkt hinter HIMEM. Das Programm läßt sich ungehindert mit jedem anderen kombinieren. Daes ziemlich lang ist, wurde der Basic-Lader so geschrieben, daß man nur einen Teil für |TASTE und |T.AN bzw. |T.AUS abtippep muß. Hierfür ist nur in den Zeilen 1160 und 2405 das zu entfernen und der Basic-Lader bis Zeile 2405 einzugeben. Um das Programm vollständig nutzen zu können, muß später der Rest folgen.

Sinnvoll ist es, zuerst dié Zeilen 1960-2050 des zweiten Programms (Listing 2) abzutippen und zu starten. Damit werden die Tasten des Zehnerblocks zur HEX-Tastatur (A-F mit SHIFT + 0-5, aus dem wird ein ”,”). Mit KEY 139, CHR$(13) + ”DATA ” erhält man dann eine neue ENTER-Taste (kleine ENTER-Taste), die automatisch das DATA an den Anfang jeder Zeile schreibt, wenn die automatische Zeilennumerierung aktiv ist (AUTO..). Ebenso lohnt es sich, die CTRL-Ebene der kleinen ENTER-Taste mit ”RR” zu belegen (KEY 140, "RR”). So müssen die Finger nur noch Innerhalb des Zehnerblocks nach der entsprechenden Taste suchen, was sicher für den Ungeübten recht hilfreich ist.

Das Programm wäre nicht sehr effektiv, wenn der Benutzer bei jedem Einschalten des Rechners alle benötigten Tasten neu definieren müßte. Der gesamte Tastenspeicher läßt sich mit SAVE "Name", B, &B34C, 1204 sichern (664/ 6128:SAVE "Name", B, &B1ED, 1190). Eine solche Kombination kann jederzeit ohne Veränderung des Speichers geladen werden; sofort stehen alle Tastendefinitionen bereit, ohne daß die RSX-Erweiterung geladen ist.

Für den 664/6128 war ein zweiter MC-Generator zur Erzeugung der RSX-Befehle nötig. Der erweiterte Expansions-String-Puffer des 664 und 6128 ist 6 Byte kürzer, und die Adressen lauten anders. Dafür kann eine Taste auch mit |TASTE, < Nummer > , < Ebene > , "Text” definiert werden. Die Befehlsbeschreibung verwendet die Form fürden 464.

Fehlermeldungen

Fehlermeldungen lassen sich mit ON ERROR GOTO ab-fangen. Auftreten können:

Syntax error (bei falscher Parameterzahl)

Improper argument (bei zu großer Tastennummer bzw. Ebene oder beim Versuch, bei IT.AUS die Alpha-Tasten zu ändern)

Memory full (wenn alle Expansionstasten belegt sind oder der Expansionspuffer voll ist)

Das Maschinenprogramm wurde so geschrieben, daß das letzte Byte das "RET” darstellt, um es zu verlassen. Ersetzt man dieses Byte durch C3 (für JP) oder fügt einen anderen RSX-Befehl an, so kann eine Kette mehrerer RSX-Programme mit einem einzigen CALL vom Basic aus installiert werden.
Tippen Sie also Listing 1 ab und dann je nach Computer Listing 1A oder 1B dazu. Das Ganze ist als TASTE.DAT abzuspeichern. Dann folgt der Start mit RUN. Nun wird der Maschinencode erzeugt und auf Wunsch auch die Datei TASTE.RSX, welche diesen beinhaltet.

Datei TASTE.RSX

Ein zweites Programm soll die Erstellung einer solchen Datei erleichtern. "TASTE-D.BAS” ermöglicht dem Benutzer die menügesteuerte Eingabe und Änderung der Tastenbelegungen. Bei Start des Programms mit "leerem" Rechner (Einschaltzustand) hat der Anwender die Wahl, ob der erweiterte Expansions-String-Speicher 32 oder 19 Funktionstasten umfassen soll. Entscheidet man sich für 32, erhalten die Tasten des Zehnerblocks eine neue Belegung, bei der keine Funktionstasten mehr verwendet werden. Der Befehl KEY 139, ändert dann nicht mehr die kleine ENTER-Taste! Die neue Zuordnung beim Zehnerblock ist besonders für die Eingabe von HEX-Zahlen geëignet. Die Tasten haben folgende Belegungen:

TasteNormalSHIFTCTRL
00ACTRL+J =CHR$(10) = LF
11BCTRL+K =CHR$(11) = VT
22CCTRL+L =CHR$(12) = FF
33DCTRL+M = CHR$(13) = CR
44ECTRL+N = CHR$(14) = PAPER
55FCTRL+O = CHR$(15) = PEN
66CHR$(6)CTRL+T =CHR$(20) = Schreibfarbe bis Cursor löschen
77CHR$(7)CTRL+Q = CHR$(17) = Zeile bis Cursor löschen
88CHR$(8)CTRL+R =CHR$(18) = Zeile ab Cursor löschen
99CHR$(9)CTRL+S = CHR$(19) = Schreibfarbe ab Cursor löschen
ENTERENTERENTERENTER

Die Sonderzeichen auf der CTRL-Ebene der Tasten lassen sich bekanntlich einfach zur Steuerung der Textausgabe verwenden: CHR$(7) = Beil, CHR$(17) = löschen bis Cursor, CHR$(18) = löschen ab Cursor-Position bis zum Ende der Zeile (s. Handbuch, Kapitel 9, Seite 3). Da diese Zeichen, die normalerweise auf der CTRL-Ebene der Tasten A-0 liegen, durch die neuen Belegungen mit |TASTE verlorengehen, sind sie zusätzlich im Zehnerblock vorhanden. Wenn das Programm, in dem man mit ihnen arbeiten will, die Tasten des Zehnerblocks mit KEY ... umdefiniert, muß auf diese Erleichterung verzichtet werden.

Nach Klärung dieser Frage befindet man sich im Eingabeteil. In der Mitte des Bildschirms werden die bisher belegten Expansionstasten, der freie Speicher und die freien Tasten des bearbeiteten Bereichs (IT.AN / IT.AUS) angezeigt. Hier kann der Benutzer mit D seine Tastendefinitionen eingeben, mit U zwischen |T.AN und |T.AUS umschalten. Mit E gelangt man zum Ende des Programms, wo sich die neu erstellten Belegungen abspeichern lassen. Zuvor sollte der gewünschte Bereich in Betrieb sein, denn beim Laden einer so erzeugten Datei werden genau die Zustände eingeschaltet, welche vorher aktiv waren (auch der CAPS-LOCK-Zustand). Nach Abtippen dieses Programms muß sich auf derselben Diskette (oder anschließend auf dem Band) die Datei TASTE.RSX befinden.

H. Stengelin , CPC Magazin

★ PUBLISHERS: CPC Magazin , CPC Magazin Codex
★ YEAR: 1987
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC MAGAZIN 1987
★ AUTHOR: Hardi Stengelin
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» RSX-Taste    (CPC  Magazin)    GERMANDATE: 2020-06-13
DL: 195
TYPE: ZIP
SiZE: 11Ko
NOTE: 40 Cyls
.HFE: Χ

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

Lien(s):
» Applications » Format (Compute Mit)
» Applications » RSX Text-Basic (CPC Magazin)
» Applications » Profi-RSX 5 (CPC Amstrad International)
» Applications » RSX New Mode
» Applications » RSX Deconvert
» Applications » RSX Muddling modes
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 525 millisecondes et consultée 1061 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.