[0001] Die Erfindung bezieht sich auf ein Verfahren zum Scrollen, d.h. horizontales Verschieben
von mehreren Rasterzeilen in einem Fenster eines im Grafikmodus betriebenen Bildschirms
eines Personalcomputers, der einen Prozessor und einen diesem zugeordneten Programmspeicher
sowie eine mit diesem Prozessor über einen externen Bus verbundene Videokarte aufweist,
die einen Videospeicher (RAM) hat, dessen Speicherinhalt auf dem Bildschirm darstellbar
ist, wobei eine erste Zeile der zu verschiebenden Rasterzeilen, die in eine Rasterzeile
innerhalb des Fensters bewegt werden soll, mit einem Ausgangszeiger markiert und diejenige
Rasterzeile innerhalb des Fensters, in die diese Zeile bewegt werden soll, mit einem
Bestimmungszeiger markiert wird, anschließend eine Verschiebung durchgeführt wird
und dies solange wiederholt wird, bis alle zu scrollenden Zeilen sich in Rasterzeilen
des Fensters befinden.
[0002] Das Scrollen, deutsch auch als Verschieben bezeichnet, wird durchgeführt, um in den
Zeilen befindliche Information an eine bestimmte Stelle, also auf gewisse Rasterzeilen
des Fensters im Bildschirm zu schieben. Bei diesen Zeilen kann es sich um bereits
angezeigte Rasterzeilen, die an anderer Stelle des Fensters sind, handeln, es kann
sich aber insbesondere auch um Zeilen handeln, die im Bildschirmfenster selbst noch
nicht dargestellt sind, sondern sich beispielsweise auf einer anderen Textseite befinden.
[0003] Ein Verfahren der eingangs genannten Art ist aus dem europäischen Patent EP 0 071
725 A bekannt. Bei diesem vorbekannten Verfahren wird die mit dem Ausgangszeiger versehene
Zeile in die im Fenster befindliche Rasterzeile bewegt, die mit dem Bestimmungszeiger
markiert ist. Anschließend wird die nachfolgende Zeile in die nachfolgende Rasterzeile
bewegt und so weiter bis alle Zeilen, die zu scrollen sind, in Rasterzeilen des Fensters
bewegt (verschoben) wurden.
[0004] Bei dem vorbekannten Verfahren werden einerseits die Verarbeitungsgeschwindigkeit
und die Übertragungsbreite, die mit modernen Prozessoren vom Typ x386 und höher ausgerüstete
Computer bieten, nicht voll ausgenutzt, andererseits erfolgt der Bildaufbau im Fenster
relativ scharf, weil Zeile für Zeile bewegt und hinzugefügt wird. Es entsteht ein
relativ scharfkantiger Übergang. Dabei ist zu beachten, daß bei einem Scrolling-Verfahren,
wie es eingangs beschrieben ist und aus der angegebenen Patentschrift bekannt ist,
das Scrollen, also die horizontale Verschiebung einzelner Rasterzeilen, nicht synchron
zur Zeilenfrequenz des Bildschirms erfolgt, wodurch während des eigentlichen Übertragungsvorgangs
ungewollte Bilder auf dem Bildschirm entstehen, zumeist ein Flackern oder Schnee.
In der angegebenen Patentschrift ist daher in einer bevorzugten Ausführung bereits
vorgeschlagen, während des Übertragungsvorgangs den Bereich, in dem die Bewegungen
stattfinden, nicht darzustellen, also einfach schwarz zu lassen oder bewußt mit einer
Farbe auszufüllen. Sobald der Scroll-Vorgang beendet wird, wird diese Dunkeltastung
oder das Anfüllen mit einem Farbattribut, beendet und werden wieder die Rasterzeilen
dargestellt.
[0005] Die Erfindung hat es sich zur Aufgabe gemacht, die Möglichkeiten moderner Prozessoren
vom genannten Typ, also x386 und höher, voller als bisher geschehen auszunutzen und
dementsprechend den Srolling-Vorgang zu beschleunigen, ihn aber andererseits so auszubilden,
daß die Übergänge zwischen bereits gescrollten Rasterzeilen und noch nicht gescrollten
Rasterzeilen weicher erfolgen, sodaß stärkere Kontrastunterschiede nicht auftreten.
[0006] Erfindungsgemäß wird diese Aufgabe dadurch gelöst, daß gleichzeitig mit der ersten
Zeile auch zumindest die nachfolgende dritte Zeile in Rasterzeilen des Bildschirmfensters
verschoben wird, daß anschließend die zweite und zumindest auch die vierte Zeile des
zu scrollenden Bereichs von Zeilen in Rasterzeilen des Bildschirmfensters verschoben
werden usw. bis alle zu scrollenden Zeilen in Rasterzeilen des Fensters verschoben
wurden.
[0007] Erfindungsgemäß werden die Verschiebungen also mit der maximalen Kapazität, die der
Prozessor zur Verfügung stellt, durchgeführt. Bei den genannten Prozessoren vom Typ
x386 und höher werden zwei Wortverschiebungen durchgeführt. Es werden insgesamt immer
zumindest zwei ungeradzahlige oder zwei geradzahlige Zeilen verschoben, vorzugsweise
vier oder gar mehr. Dadurch ist die Anzahl von Verschiebungen pro Takt zumindest doppelt
so hoch wie nach dem Stand der Technik, der Scroll-Vorgang läuft entsprechend schneller
ab. Durch das gleichzeitige Scrollen mehrerer geradzahliger Zeilen bzw. mehrerer ungeradzahliger
Zeilen erfolgt der Bildaufbau im Fenster des Bildschirms versetzt, es werden also
zunächst die verschobenen n geradzahligen Zeilen dargestellt, zwischen denen die ungeradzahligen
Rasterzeilen noch leer bleiben. Anschließend werden in einem zweiten Verschiebungsschritt
diese ungeradzahligen Rasterzahlen ebenfalls gefüllt usw. Für einen Betrachter erfolgt
der Bildaufbau daher angenehmer und für das Auge schonender. Dies ist deshalb günstig,
weil der Bildaufbau als solcher rascher erfolgt. Die beiden mit der Erfindung erhaltenen
Vorteile sind somit eng miteinander verknüpft.
[0008] In einer bevorzugten Weiterbildung werden pro Verschiebungsschritt mindestens vier
geradzahlige Zeilen in Rasterzeilen des Fensters und in einem nachfolgenden Verschiebungsschritt
mindestens vier ungeradzahlige Zeilen in Rasterzeilen des Fensters geschoben. Hierdurch
erfolgt der Bildaufbau noch rascher, der bereits beschriebene Zeilenversatz bleibt
beim Bildaufbau erhalten und ist noch deutlicher ausgeprägt.
[0009] In einer weiteren Verbesserung erfolgen die Scroll-Bewegungen, also die Bewegungen
im Videospeicher, in Doppelwort-Schritten. Dadurch wird die volle Leistungsfähigkeit
des Prozessors ausgenutzt. Es ist möglich, in 32 bit die Informationen zu übertragen.
Bei einem Überlauf (edge condition) erfolgt ein individuelles Behandeln der bytes,
bzw. Worte so, daß die Zweiwortbegrenzung eingehalten wird.
[0010] Unter dem Begriff Bildschirm wird eine sogenannte Katodenstrahlröhre verstanden,
bei der mindestens ein Elektronenstrahl zeilenförmig über eine mit phosphoreszierendem
Material belegte Bildwand geleitet wird.
[0011] Die Erfindung wird im folgenden unter Bezugnahme auf die Zeichnung näher erläutert,
in der ein nicht einschränkend zu verstehendes Ausführungsbeispiel dargestellt ist.
Dieses bezieht sich auf ein Scrollen in den CGA-kompatiblen Videomodi 4,5 und 6 und
wird unter Bezugnahme auf die Zeichnungen im folgenden erläutert. Die Beschreibung
ist auf andere Modi übertragbar. In der Zeichnung zeigen:
- FIG. 1:
- ein Flußdiagramm für den Ablauf des nach Einschalten ablaufenden Selbsttestes (POST-Test)
eines Personalcomputers,
- FIG. 2:
- ein Flußdiagramm für den Ablauf eines Scrollings und
- FIG. 3:
- ein Flußdiagramm für das in FIG. 2 an zwei Stellen verwendete Unterprogramm.
[0012] Fig. 1 zeigt den Ablauf, wie er beim Anfangstest, dem sogenannten POST, der englischen
Abkürzung für Power on self test, abläuft. Beim Einschalten des Computers also bei
"Start", werden zahlreiche Tests durchgeführt, die sich auf die zentrale Hardware
des Personalcomputers, beispielsweise Prozessor, Speicher, Interrupt-Controller, DMA
usw. beziehen. Dabei werden auch ROM-Erweiterungen überprüft, die sich entweder auf
der Hauptplatine oder auf einer Erweiterungskarte befinden und die Aufgabe haben,
die Funktionen des BIOS zu erweitern oder sie zu ersetzen. Zu erkennen sind solche
Erweiterungen durch die beiden ersten byte in dem Speicherbereich, der von ihnen belegt
wird.
[0013] Das ROM Modul wird nun benutzt, den Interrupt Vektor 10h auf eine eigene Routine
umzuleiten. Dadurch wird die normale Funktion des BIOS durch eine neue Funktion ersetzt.
Der Post-Test schließt ab mit POST ENDE. Danach wird in bekannter Weise der Interrupt
10h aufgerufen.
[0014] Für den im folgenden zu erläuterten Code werden die folgenden Parameter verwandt:
[BP+5] Nummer der Funktion
[BP-2] Ausgangszeiger in geradzahliger Rasterzeile des Videospeicher
[BP-4] Bestimmungszeiger in geradzahliger Rasterzeile
[BP-5] Anzahl der bytes, die pro Rasterzeile zu kopieren sind
[BP-8] Anzahl der zu scrollenden Rasterzeilenpaare.
[0015] Der Code hat den folgenden Ablauf:
1. Aufruf der Subroutine 4.
2. Addiere 2000h zu [BP-2] und [BP-4].
3. Aufruf der Subroutine 4.
4. Abziehen 2000h sowohl von [BP-2] als auch von [BP-4].
4. Wiederhole ([BP-8]/2)+1 mal
a. CX=null-expandiert [BP-5]
b. SI=[BP-2], DI=[BP-4]
c. Verschiebe CX rechts um eins, wenn carry, dann movsb
d. Verschiebe CX nach rechts um eins, wenn carry, dann movsw
e. Ausführen von rep movsd
f. Wenn [BP+5]=6, [BP-2]+=80, [BP-4]+=80; außerdem [BP-2]-=80, [BP-4]-=80.
[0016] Der Ablauf eines Scanvorgangs ist aus den Figuren 2 und 3 ersichtlich. Nach dem Ablauf
gemäß FIG. 2 werden zumindest zwei geradzahlige und anschließend zumindest zwei ungeradzahlige
Rasterzeilen vom Ausgangszeiger zum Bestimmungszeiger verschoben. Dabei wird zweimal
das Unterprogramm CGA_MOVE_LP aufgerufen, das aus FIG. 3 ersichtlich ist. Aus dem
dort wiedergegebenen Ablauf ist zu ersehen, daß beim Verschieben stets die maximale
Kapazität ausgenutzt wird, die der Prozessor anbietet. Das Verschieben erfolgt vorzugsweise
in Doppelworten.
1. Verfahren zum Scrollen von mehreren Rasterzeilen in einem Fenster eines im Grafikmodus
betriebenen Bildschirms eines Personalcomputers, der einen Prozessor und einen diesem
zugeordneten Programmspeicher sowie eine mit diesem Prozessor über einen externen
Bus verbundene Videokarte aufweist, die einen Videospeicher (RAM) hat, dessen Speicherinhalt
auf dem Bildschirm darstellbar ist, wobei eine erste Zeile der zu verschiebenden Rasterzeilen,
die in eine Rasterzeile innerhalb des Fensters bewegt werden soll, mit einem Ausgangszeiger
markiert und diejenige Rasterzeile innerhalb des Fensters, in die diese Zeile bewegt
werden soll, mit einem Bestimmungszeiger markiert wird, anschließend eine Verschiebung
durchgeführt wird und dies solange wiederholt wird, bis alle zu scrollenden Zeilen
sich in Rasterzeilen des Fensters befinden, dadurch gekennzeichnet, daß gleichzeitig
mit der ersten Zeile auch zumindest die nachfolgende dritte Zeile in Rasterzeilen
des Bildschirms verschoben werden, daß anschließend die zweite und zumindest auch
die vierte Zeile des zu scrollenden Bereichs von Zeilen in Rasterzeilen des Bildschirms
verschoben werden bis alle zu scrollenden Zeilen in Rasterzeilen des Fensters verschoben
wurden.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß gleichzeitig mindestens vier
geradzahlige Zeilen in Rasterzeilen des Fensters verschoben werden und anschließend
gleichzeitig mindestens vier ungeradzahlige Zeilen in Rasterzeilen des Fensters bewegt
werden.
3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß bei einem Takt zwei
Doppelworte des zu verschiebenden Inhalts von geradzahligen oder ungeradzahligen Rasterzeilen
verschoben werden.
1. Procedure for scrolling of some raster scan lines in a window of a screen, operated
in the graphic-mode, of a personal computer, which has a processor and a program memory
allocated to it as well as a video card, connected with the processor via an external
bus, said video card having a video memory (RAM), whose memory contents can be displayed
on the screen, where one first line of the raster scan lines to be scrolled, to be
moved in a raster scan line within the window, is marked with a source-pointer and
such raster scan line within a window, in which this line is to be moved into, is
marked with a destination pointer, after that a scroll is performed and repeated until
all lines to be scrolled are in the raster scan lines of the window, characterized
by the fact that at the same time with the first line also at least the subsequent
third line is scrolled in raster scan lines of the screen window, that after that
the second and at least the fourth line of the said some raster lines to be scrolled
is scrolled from lines in raster scan lines of the screen window until all lines to
be scrolled were scrolled into raster scan lines of the window.
2. Procedure according to claim 1, characterized by the fact that at least four even-numbered
lines are scrolled into raster scan lines of the window simultaneously and after that
four odd-numbered lines are moved in raster scan lines of the window simultaneously.
3. Procedure according to claim 1 or 2, characterized by the fact that within a clock-cycle
two double-words of the said some raster lines to be scrolled of even-numbered or
odd-numbered raster scan lines are scrolled.
1. Procédé pour faire défiler plusieurs lignes de trame dans une fenêtre d'un écran d'un
ordinateur individuel, fonctionnant en mode graphique, ledit ordinateur individuel
présente un processeur et une mémoire de programme associée à ce dernier ainsi qu'une
carte vidéo connectée à ce processeur par l'intermédaire d'un bus externe, ladite
carte vidéo ayant une mémoire vidéo (RAM) dont le contenu de mémoire peut être présenté
sur l'écran, une première ligne des lignes de trame à déplacer, qui doit être déplacée
dans une ligne de trame à l'intérieur de la fenêtre étant marquée d'un indicateur
de départ et la ligne de trame à l'intérieur de la fenêtre, dans laquelle cette ligne
doit être déplacée étant marquée d'un indicateur de destination, ensuite un déplacement
étant effectué et cela étant répété jusqu'à ce que toutes les lignes à mouvoir se
trouvent dans des lignes de trame de la fenêtre, caractérisé par le fait que, en même
temps que la première ligne, au moins aussi la troisième ligne subséquente est déplacée
dans des lignes de trame de l'écran, que, ensuite, la deuxième et au moins aussi la
quatrième ligne du domaine à mouvoir de lignes sont déplacées dans des lignes de trame
de l'écran jusqu'à ce que toutes les lignes à mouvoir fussent déplacées dans des lignes
de trame de la fenêtre.
2. Procédé selon la revendication 1, caractérisé par le fait que du moins quatre lignes
paires sont déplacées simultanément dans des lignes de trame de la fenêtre et que,
ensuite, du moins quatre lignes impaires sont déplacées simultanément dans des lignes
de trame de la fenêtre.
3. Procédé selon la revendication 1 ou 2, caractérisé par le fait que, dans un cycle,
deux doubles mots du contenu à déplacer de lignes de trame paires ou impaires sont
déplacés.