★ APPLICATIONS ★ DIVERS ★ BLINKENDER CURSOR UNTER CP/M (CPC AMSTRAD INTERNATIONAL) ★ |
Blinkender Cursor unter CP/M (CPC Amstrad International) | Applications Divers |
Ein blinkender Cursor ist besonders bei Textverarbeitungsprogrammen sehr angenehm. Beim CPC steht jedoch nur dem Besitzer von VORTEX-Laufwerken unter CP/M 2.2 zur Verfügung. Gelegentlich werden Programmtips zur Erzeugung eines blinkenden Cursor veröffentlicht, die jedoch nur unter BASIC laufen. Im Folgenden werden drei Programmversionen angegeben, die einen blinkenden Cursor unter CP/M erzeugen:
Der Cursor wird bei den CPCs durch Software der Betriebssysteme erzeugt. Zur Einschaltung dienen die Routine “TXT CURSOR ENABLE“ und "TXT CURSOR ON“, die beide aufgerufen werden müssen. Die Abschaltung erfolgt durch den Aufruf von “TXT CURSOR DISABLE“ oder von "TXT CURSOR OFF“ (oder von beiden). Wenn man in Abständen von jeweils 0,25 Sekunden abwechselnd “TXT CURSOR ENABLE“ und “TXT CURSOR DISABLE“ aufruft, erhält man einen Cursor, der zweimal in der Sekunde blinkt. Kann man auch “CURSOR ON“ und “CURSOR OFF“ verwenden? Grundsätzlich ja, aber diese Routinen werden auch vom Betriebssystem benutzt. z.B. um den Cursor bei Textausgabe aus- und einzuschalten. Ruft der Benutzer sie nun periodisch auf, so erscheinen Cursorsymbole auf dem Bildschirm, wo man sie gar nicht will. Der regelmäßige Aufruf eines Programmes kann beim CPC über die sogenannten "Ticker“ erfolgen, die in bestimmten Zeitabständen ein “INTERRUPT-Signal“ erzeugen, das dann eine Benutzer-Routine aufrufen kann. Wir verwenden den “normalen TICKER“, der 50mal pro Sekunde ein INTERRUPT-Signal ausgibt. Damit alles richtig funktioniert, muß unsere Routine in eine Warteschlange, die sogenannte 'TICKER CHAIN“, “eingehängt“ werden. Dabei können wir dann auch noch erreichen, daß unser Blinkprogramm nicht 50mal, sondern nur etwa vier mal pro Sekunde aufgerufen wird. Listing 1 enthält im ersten Teil das Initialisierungsprogramm, mit dem unsere Blinkroutine in die TICKER CHAIN eingehängt wird. COUNTDOWN und Wiederanlaufwert >ind so gewählt, so daß die Routine alle 12/50 Sekunde aufgerufen wird. Da abwechselnd ENABLE und DISABLE erfolgen, beträgt die Blinkfrequenz annähernd zwei pro Sekunde. Ein niedrigerer Wert erhöht, ein höherer Wert erniedrigt die Frequenz. Der zweite Teil von Listing 1 bildet die eigentliche Blinkroutine, in dem ENABLE und DISABLE abwechselnd aufgerufen werden, gesteuert vom Wert des Blinkflags, der wiederum nach Aufruf der entsprechenden Systemroutine geändert wird. Da es sich um ein Interruptprogramm handelt, werden während der Ausführung weitere Interrupts gesperrt und vorsichtshalber auch die Register gerettet. Soweit ist alles identisch mit den Blinkprogrammen, die unter BASIC laufen. Entscheidend ist nun die Frage: Wo soll das Programm im Speicher stehen? Es darf ja unter keinen Umständen von anderen Benutzerprogrammen überschrieben werden. Unter BASIC ist das leichter zu bewerkstelligen: Die obere Memorygrenze wird unter dem benötigten Betrag herabgesetzt, und oberhalb dieser neuen Grenze kann dann das Blinkprogramm absolut sicher gespeichert werden. Unter CP/M ist das nicht so einfach. In der TPA, wo sich alle Benutzerprogramme tummeln, gibt es keinen Platz, der gegen Überschreiben gesichert ist.Beim CPC gibt es nun glücklicherweise Speicherplätze in Systembereiche oberhalb der TPA, die unter CP/M praktisch nicht genutzt werden. Hierzu gehört z.B. der “SOUND-BUFFER“, ein RAM-Bereich für den “SOUND-MANAGER“. Die Adressen sind unterschiedlich für die einzelnen CPC-Typen: Beim CPC 464 wählen wir den Bereich ab B7B0. Für den CPC 664/6128 lautet dann die äquivalente Adresse B3E0. Listing 2 zeigt im oberen Teil, wie mit einem einfachen LDIR-Befehl der Block aus Initialisierung und Blinkprogramm in den SOUND-BUFFER befördert und dann dort die Initialisierung aufgerufen wird. Darunter ist der Hexdumb für die Blinkprogramme unter CP/M 2.2. Eingabe und Speichern der Programme Curblk22.com bzw. Curblk44.com auf der Diskette geschieht mit Hilfe des Programmes DDT.COM. Es bezieht sich auf das Programm Curblk22.com für den CPC 6128. Wenn Sie das Programm Curblk44.com für den CPC 464 erzeugen wollen, so müssen Sie bei der Eingabe folgende Änderungen anbringen: 0104 B0 statt E0 |
|
|