<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ep-patent-document PUBLIC "-//EPO//EP PATENT DOCUMENT 1.1//EN" "ep-patent-document-v1-1.dtd">
<ep-patent-document id="EP95910402B1" file="EP95910402NWB1.xml" lang="de" country="EP" doc-number="0695451" kind="B1" date-publ="20000503" status="n" dtd-version="ep-patent-document-v1-1">
<SDOBI lang="de"><B000><eptags><B001EP>ATBECHDE..ESFRGB..ITLI..NLSE......................</B001EP><B003EP>*</B003EP><B005EP>R</B005EP><B007EP>DIM360   - Ver 2.9 (30 Jun 1998)
 2100000/0</B007EP></eptags></B000><B100><B110>0695451</B110><B120><B121>EUROPÄISCHE PATENTSCHRIFT</B121></B120><B130>B1</B130><B140><date>20000503</date></B140><B190>EP</B190></B100><B200><B210>95910402.7</B210><B220><date>19950217</date></B220><B240><B241><date>19960226</date></B241><B242><date>19990916</date></B242></B240><B250>de</B250><B251EP>de</B251EP><B260>de</B260></B200><B300><B310>4405330</B310><B320><date>19940221</date></B320><B330><ctry>DE</ctry></B330></B300><B400><B405><date>20000503</date><bnum>200018</bnum></B405><B430><date>19960207</date><bnum>199606</bnum></B430><B450><date>20000503</date><bnum>200018</bnum></B450><B451EP><date>19990916</date></B451EP></B400><B500><B510><B516>7</B516><B511> 7G 09G   5/14   A</B511><B512> 7G 09G   1/16   B</B512></B510><B540><B541>de</B541><B542>VERFAHREN ZUM SCROLLEN VON MEHREREN RASTERZEILEN IN EINEM FENSTER EINES IM GRAFIKMODUS BETRIEBENEN BILDSCHIRMS EINES PERSONALCOMPUTERS</B542><B541>en</B541><B542>PROCESS FOR SCROLLING A PLURALITY OF RASTER LINES IN A WINDOW OF A PERSONAL COMPUTER DISPLAY SCREEN RUN IN GRAPHIC MODE</B542><B541>fr</B541><B542>PROCEDE POUR FAIRE DEFILER PLUSIEURS LIGNES DE TRAMES DANS UNE FENETRE D'UN ECRAN D'UN MICRO-ORDINATEUR, FONCTIONNANT EN MODE GRAPHIQUE</B542></B540><B560><B561><text>EP-A- 0 071 725</text></B561><B561><text>EP-A- 0 284 905</text></B561><B561><text>EP-A- 0 410 783</text></B561><B561><text>US-A- 4 816 817</text></B561></B560></B500><B700><B720><B721><snm>PALEY, Greg
Award Software Int., Inc.</snm><adr><str>777 East Middlefield Road</str><city>Mountain View, CA 94043</city><ctry>US</ctry></adr></B721><B721><snm>BAUER, Wulf</snm><adr><str>Bayenthalgürtel 15</str><city>D-50968 Köln</city><ctry>DE</ctry></adr></B721></B720><B730><B731><snm>VOBIS MICROCOMPUTER AG</snm><iid>01896440</iid><irf>VOB 2/94 PCT/EP</irf><adr><str>Carlo-Schmid-Strasse 12</str><city>52146 Würselen</city><ctry>DE</ctry></adr></B731><B731><snm>AWARD SOFTWARE INT., INC.</snm><iid>02025310</iid><irf>VOB 2/94 PCT/EP</irf><adr><str>777 East Middlefield Road</str><city>Mountain View, CA 94043-4023</city><ctry>US</ctry></adr></B731></B730><B740><B741><snm>Bauer, Wulf, Dr.</snm><iid>00046031</iid><adr><str>Bayenthalgürtel 15</str><city>50968 Köln (Marienburg)</city><ctry>DE</ctry></adr></B741></B740></B700><B800><B840><ctry>AT</ctry><ctry>BE</ctry><ctry>CH</ctry><ctry>DE</ctry><ctry>ES</ctry><ctry>FR</ctry><ctry>GB</ctry><ctry>IT</ctry><ctry>LI</ctry><ctry>NL</ctry><ctry>SE</ctry></B840><B860><B861><dnum><anum>DE9500205</anum></dnum><date>19950217</date></B861><B862>de</B862></B860><B870><B871><dnum><pnum>WO9522814</pnum></dnum><date>19950824</date><bnum>199536</bnum></B871></B870></B800></SDOBI><!-- EPO <DP n="1"> -->
<description id="desc" lang="de">
<p id="p0001" num="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.</p>
<p id="p0002" num="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.</p>
<p id="p0003" num="0003">Ein Verfahren der eingangs genannten Art ist aus dem europäischen Patent<!-- EPO <DP n="2"> --> 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.</p>
<p id="p0004" num="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.</p>
<p id="p0005" num="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.</p>
<p id="p0006" num="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<!-- EPO <DP n="3"> --> Rasterzeilen des Bildschirmfensters verschoben werden usw. bis alle zu scrollenden Zeilen in Rasterzeilen des Fensters verschoben wurden.</p>
<p id="p0007" num="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.</p>
<p id="p0008" num="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.</p>
<p id="p0009" num="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.</p>
<p id="p0010" num="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.<!-- EPO <DP n="4"> --></p>
<p id="p0011" num="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:
<dl id="dl0001">
<dt>FIG. 1:</dt><dd>ein Flußdiagramm für den Ablauf des nach Einschalten ablaufenden Selbsttestes (POST-Test) eines Personalcomputers,</dd>
<dt>FIG. 2:</dt><dd>ein Flußdiagramm für den Ablauf eines Scrollings und</dd>
<dt>FIG. 3:</dt><dd>ein Flußdiagramm für das in FIG. 2 an zwei Stellen verwendete Unterprogramm.</dd>
</dl></p>
<p id="p0012" num="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.</p>
<p id="p0013" num="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.<!-- EPO <DP n="5"> --></p>
<p id="p0014" num="0014">Für den im folgenden zu erläuterten Code werden die folgenden Parameter verwandt:
<ul id="ul0001" list-style="none" compact="compact">
<li>[BP+5] Nummer der Funktion</li>
<li>[BP-2] Ausgangszeiger in geradzahliger Rasterzeile des Videospeicher</li>
<li>[BP-4] Bestimmungszeiger in geradzahliger Rasterzeile</li>
<li>[BP-5] Anzahl der bytes, die pro Rasterzeile zu kopieren sind</li>
<li>[BP-8] Anzahl der zu scrollenden Rasterzeilenpaare.</li>
</ul></p>
<p id="p0015" num="0015">Der Code hat den folgenden Ablauf:
<ul id="ul0002" list-style="none" compact="compact">
<li>1. Aufruf der Subroutine 4.</li>
<li>2. Addiere 2000h zu [BP-2] und [BP-4].</li>
<li>3. Aufruf der Subroutine 4.</li>
<li>4. Abziehen 2000h sowohl von [BP-2] als auch von [BP-4].</li>
<li>4. Wiederhole ([BP-8]/2)+1 mal
<ul id="ul0003" list-style="none" compact="compact">
<li><b>a</b>. CX=null-expandiert [BP-5]</li>
<li><b>b</b>. SI=[BP-2], DI=[BP-4]</li>
<li><b>c</b>. Verschiebe CX rechts um eins, wenn carry, dann movsb</li>
<li><b>d</b>. Verschiebe CX nach rechts um eins, wenn carry, dann movsw</li>
<li><b>e</b>. Ausführen von rep movsd</li>
<li><b>f</b>. Wenn [BP+5]=6, [BP-2]+=80, [BP-4]+=80; außerdem [BP-2]-=80, [BP-4]-=80.</li>
</ul></li>
</ul></p>
<p id="p0016" num="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.</p>
</description><!-- EPO <DP n="6"> -->
<claims id="claims01" lang="de">
<claim id="c-de-01-0001" num="0001">
<claim-text>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.<!-- EPO <DP n="7"> --></claim-text></claim>
<claim id="c-de-01-0002" num="0002">
<claim-text>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.</claim-text></claim>
<claim id="c-de-01-0003" num="0003">
<claim-text>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.</claim-text></claim>
</claims><!-- EPO <DP n="8"> -->
<claims id="claims02" lang="en">
<claim id="c-en-01-0001" num="0001">
<claim-text>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.</claim-text></claim>
<claim id="c-en-01-0002" num="0002">
<claim-text>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.</claim-text></claim>
<claim id="c-en-01-0003" num="0003">
<claim-text>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.</claim-text></claim>
</claims><!-- EPO <DP n="9"> -->
<claims id="claims03" lang="fr">
<claim id="c-fr-01-0001" num="0001">
<claim-text>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.</claim-text></claim>
<claim id="c-fr-01-0002" num="0002">
<claim-text>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.</claim-text></claim>
<claim id="c-fr-01-0003" num="0003">
<claim-text>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.</claim-text></claim>
</claims><!-- EPO <DP n="10"> -->
<drawings id="draw" lang="de">
<figure id="f0001" num=""><img id="if0001" file="imgf0001.tif" wi="59" he="124" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="11"> -->
<figure id="f0002" num=""><img id="if0002" file="imgf0002.tif" wi="157" he="242" img-content="drawing" img-format="tif"/></figure>
</drawings>
</ep-patent-document>
