APPLICATIONSDIVERS ★ Blinkender Cursor ★

Flash (CPC Amstrad International)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 ★ 

Es gibt Computer, deren Cursor ständig blinkt Andere, wie etwa der Schneider, haben einen »ruhigen« Cursor. Beide Arten haben ihre Vorund Nachteile.

Ein blinkender Cursor zum Beispiel ist in einem vollgeschriebenem Textfeld viel leichter erkennbar. Häufig findet man aber das Blinken ziemlich irritierend.

Das folgende Programm bietet nun jedem die Möglichkeit, den Cursor nach dem eigenen Geschmack einzurichten. Es stellt einen zusätzlichen Befehl FLASH zur Verfügung, mit dessen Hilfe man den Cursor auf eine beliebige Frequenz einstellen kann. Entwickelt wurde das Programm auf einem CPC 464, es müßte aber auf einem CPC 664 oder einem 6128 auch laufen. Die genaue Form des Befehls ist: :Flash,n

n ist dabei ein beliebiger numerischer Ausdruck, mit 0 < = n < 65536. Danach blinkt der Cursor, wobein die Dauer einer

Hell- oder Dunkelperiode ist, gemessen in 1/50 Sekunden. n=0 stellt das Blinken vollständig ab. Der Doppelpunkt steht für den senkrechten Strich, chr$(&7C) (erreichbar mit SHIFT "Klammeraffe").
Zur Verwendung des Programms:

  1. Geben Sie das BASIC-Ladeprogramm sorgfältig ein. Die REMs können Sie weglassen.
  2. Speichern Sie es ab. Durch einen Tippfehler im Maschinenprogramm kann der Rechner vollständig abstürzen.
  3. Führen Sie eventuelle SYMBOL-AFTER-Befehle durch, falls Sie später Zeichen umdefinieren wollen. Das Ladeprogramm führt ein MEMORY durch, und danach ist kein SYMBOL-AFTER mehr möglich.
  4. RUN
  5. (Evtl.) NEW, LOAD "Ihr Programm"

Der Befehl steht vom RUN an zur Verfügung, bis der Rechner zurückgesetzt wird.

Das Ladeprogramm legt die Maschinenroutine unmittelbar unter HIMEM ab, setzt die absoluten Sprungziele richtig ein und reduziert HIMEM entsprechend. Der BASIC-Speicherplatz wird um nur 107 Byte verkleinert.

Die Methode ist im Prinzip folgende: Das Betriebssystem pflegt eine Liste von sogenannten »Ereignissen«, die 50 mal in der Sekunde »angestoßen« werden. Ein Ereignis besteht im wesentlichen aus einer Ereignisroutine und einem Ereignisblock. Dieser enthält Systeminformationen über das jeweilige Ereignis. Beim Eintragen eines Ereignisses in die obige Liste, gibt man zusätzlich einen sogenannten Zähler und einen Wiederanlaufwert an. Der Anstoß eines Ereignisses, der, wie erwähnt, alle fünfzigstel Sekunden stattfindet bewirkt nun folgendes:

  • Ist der Zähler ungleich 0, wird er um 1 vermindert. Ansonsten geschieht nichts.
  • Ist der Zähler gleich 0, wird er auf den Wiederanlaufwert gesetzt und die Ereignisroutine abgearbeitet

Wenn also der Zähler und Wiederanlaufwert 100 betragen, wird die Ereignisroutine alle 100/50 = 2 Sekunden durchgeführt. (Diese Technik wi rd übrigens von den BASIC-Befehlen EVERY und AFTER angewendet.) Die vorliegende Ereignisroutine unterhält ein Datenbyte mit der Information, ob sie den Cursor zuletzt aus- oder eingeschaltet hat Je nachdem werden die Cursor aller 8 Windows neu gesetzt bzw. gelöscht.
Beim Aufruf des Befehls FLASH (dieser wird als RSX = Resident System Extension eingebunden) wird nun das Ereignis (mit dem übergebenen Wert n als Zählerund Wiederanlauf-wert) in die Liste eingetragen oder (n=0) aus ihr entfernt.

Zum Ein- und Ausschalten des Cursors: Die Firmware stellt hierzu zwei Paare von Routinen zur Verfügung:

  • TXT Cur Enable &BB7C
  • TXT Cur Disable &BB7E
  • TXT Cur On &BB81
  • TXT Cur Off &BB84

Der Cursor ist nur dann sichtbar, wenn er mit beiden Routinen (Cur Enable und Cur On) eingeschaltet wurde. Die Firmware selbst verwendet genau wie BASIC, grundsätzlich nur die Routinen Cur On/Off. Der Cursor ist ständig »enabled«. Mein Programm verwendet nun die Routinen Cur Enable/ Disable. Dadurch wird Blinken erreicht ohne den Zustand des Cursors, wie er durch BASIC gesetzt wird, zu verändern. Man kann diese Routinen auch von BASIC her aufrufen, z.B. mit CALL &BB81. Das dürfte eine nützliche Hilfe für Textverarbeitungsprogramme u.ä. sein. Das System wird durch den Befehl etwas verlangsamt. Messungen (an der Schleife t=time:for i= 1 to 5000:next:?(time-t)/ 300) ergaben folgende Werte:

ZeitVerzögerung
FLASH nicht vorhanden5.29 s-
FLASH, 05.29 s0.00%
FLASH, 2005.34 s0.95%
FLASH, 1005.35 s1.13%
FLASH, 505.36 s1.39%
FLASH, 205.41 s2.21%
FLASH, 105.48 s3.53%
FLASH, 55.62 s6.30%
FLASH, 26.12 s15.69%
FLASH, 17.16 s35.41%


Die hohen Werte bei den schnellen Blinkperioden rühren daher, daß das Betriebssystem z.B. bei FLASH, 1 alle 8 Cursor 50 mal in der Sekunde aus- oder einschalten muß. Dennoch dürften die Werte bei einer vernünftigen Periode von 20 bis 30 akzeptabel sein. Für längere Berechnungen empfiehlt es sich dennoch, das Blinken (mit FLASH,0) abzustellen.

Der Copycursor ist vom Blinken übrigens nicht betroffen. Dadurch kann man ihn leicht vom normalen Cursor unterscheiden.

CPCAI 85/12

★ PUBLISHER: CPC Amstrad International
★ YEAR: 1985
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC AMSTRAD INTERNATIONAL 1982
★ AUTHOR: Georg Beran
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» RSX-Flash    (CPC  Amstrad  International)DATE: 2012-12-16
DL: 220
TYPE: ZIP
SiZE: 4Ko
NOTE: 40 Cyls
.HFE: Χ

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

Lien(s):
» Applications » RSX-Druck (CPC Amstrad International)
» Applications » Digital Background Clock / RSX Clock (Computer Team)
» Applications » RsxSort
» Applications » Toolkit
» Applications » Rsx - Character Expansion (Popular Computing Weekly)
» Applications » RSX Binking (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 658 millisecondes et consultée 1450 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.