APPLICATIONSDIVERS ★ BLINKENDER CURSOR UNTER CP/M (CPC AMSTRAD INTERNATIONAL) ★

Blinkender Cursor unter CP/M (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 ★ 

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:

  • CURBLK44.COM für den CPC 464 unter CP/M 2.2 AMSDOS-Version.
  • CURBLK22.COM für den CPC 6128 unter CP/M 2.2 AMSDOS-Version.
  • CURBLK30.COM für den CPC 6128 unter CP/M 3.0 VORTEX und AMSDOS.

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
0105 B7 statt B3
010C B0 statt E0
010DB7 statt B3

Am Schluß: SAVE 1 Curblk44.com
statt: SAVE 1 curblk22.com
Einzelheiten zur Handhabung von DDT.COM in “Programmentwicklung unter CP/M 2.2“
Helmut Fischer, Markt und Technik

So gehts!

Nachdem das Programm “DDT.COM“ von der Systemdiskette gestartet wurde, sieht man folgendes:

A> ddt
DDT VERS. 2.2

und nun gibt man dies ein

- F0100, 01FF,00
— S0100
0100 00 21
0101 00 11
0102 00 01
0103 00 11
0104 00 E0

und so weiter bis:

0159 00 .
-^C (Control C)

danach müßte erscheinen:

-A> SAVE 1 Curblk22.com
-A>

Das Programm Curblk22.com unter CP/M 2.2 wird mit DDT.com erstellt. Für das Programm Curblk44.com sind die im Text angegebenen Änderungen zu beachten!

Unter CP/M Plus ist die Angelegenheit etwas schwieriger. Der RAM-Bereich ab B3E0 gehört zwar auch zum SOUNDBUFFER. Dieser liegt aber in der Speicherbank 0 (System-

bank). Für den Benutzer ist aber normalerweise nur die Speicherbank 1 (TPA-Bank) zugänglich. Glücklicherweise gibt es auch hier die Möglichkeit, einen “bankübergreifenden Transfer“ durchzuführen.

Listing 3 zeigt im oberen Teil, wie das gemacht wird. Ausführlicher dazu kann vielleicht in einem späteren Aufsatz über Tips zum Umgang mit dem Betriebssystem von CP/M Plus erläutert werden. Im unteren Teil ist der Hexdump für das vollständige Blinkprogramm unter CP/M Plus dargestellt.

Eingabe und Speichern des Programmes Curblk30.com auf der Diskette geschieht mit Hilfe des Programmes SID.com. (Einzelheiten zur Handhabung von SID.COM ist in “CP/M Plus Anwenderhandbuch CPC 6128/JOYCE“ von Jürgen Hückstädt, Verlag Markt & Technik beschrieben).

Nun zum CP/M Plus

Hier lautet die Eingabe beim Start vom CP/M Plus:

A> SID
CP/M 3 SID Version 3.0
# F0100, 01FF, 00
# S0100

weiter gehts mit:

0100 00 11
0101 00 1C
0102 00 01
0103 00 01
0104 00 48
0105 00 00
0106 00 21
.
.
Hier weiter, wie im Hexdump von Curblk30.com.
.
.
0164 00 .

# W Curblk30.com, 0100, 0165

dann müßte stehen:

0001h record(s) written
# ^C (Control C)
A>

Die Blinkprogramme laufen einwandfrei bei allen “klassischen“ CP/M-Programmen (z.B. Wordstar, dBaseII, Multiplan, Turbo Pascal usw.) Es gibt jedoch CP/M-Programme, die speziell für die CPCs geschrieben sind, und die auch den SOUND-BUFFER verwenden. Dazu gehört z.B. die Diskettenroutine “Diskpara“.

Hier kann eine “Interessenkollision“ stattfinden, so daß beide Programme nicht laufen und der Rechner eventuell sogar “abstürzt“.

Literatur:zur Interrupt-Programmierung: Jörn W.Janneck Till Mossakowski ROM-Listing CPC 464/664/6128 Markt & Technik
Günter Woigk Das Schneider CPC Systembuch SYBEX-Verlag

Hans-Georg Sanner/cd, CPCAI

★ PUBLISHER: CPC Amstrad International
★ YEAR: 1988
★ CONFIG: CP/M / CP/M+
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC AMSTRAD INTERNATIONAL 1988
★ AUTHOR: Hans-Georg Sanner
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» Blinkender  Cursor  unter  CPM    (CPC  Amstrad  International)    GERMANDATE: 2021-08-08
DL: 149
TYPE: ZIP
SiZE: 3Ko
NOTE: 40 Cyls
.HFE: Χ

» Blinkender  Cursor  unter  CPM    (CPC  Amstrad  International)    LISTING    GERMANDATE: 2021-08-08
DL: 154
TYPE: PDF
SiZE: 221Ko
NOTE: 1 page/PDFlib v1.6

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

Lien(s):
» Applications » Les Commandes Transitoires (Amstrad Magazine)
» Applications » Texteditor de Luxe : Textverarbeitung unter CP/M Plus (CPC Amstrad International)
» Applications » Control de Stocks CP/M
» Applications » ACE (Advantage CP/M Editor)
» Applications » CPM+ : Extended Turbo Graphic Toolbox
» Applications » Mi-C-Compiler
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 538 millisecondes et consultée 818 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.