-
Die Erfindung bezieht sich auf ein Grafik- und
Datenanzeigesystem und dabei insbesondere auf ein Anzeigesystem mit einem
Speicher, der über Bitblockübertragungsfähigkeiten verfügt.
-
Bitabgebildete Anzeigen behandeln den Bildschirm als diskrete
rechteckige Mascheneinrichtung oder als Punktmatrix. Diese
Punkte werden als Pels oder Pixel (Bildelemente) bezeichnet.
Jedes Pel wird durch ein oder mehrere Bits im Speicherfeld der
Anzeige dargestellt. Ein nützliche Funktion der
bitabgebildeten Anzeigen besteht darin, einen rechteckigen Pel-Block von
einer Stelle in der Bitabbildung zu einer anderen Stelle zu
bewegen, und das Quellrechteck mit dem Zielrechteck logisch zu
verbinden. Zu diesen logischen Funktionen gehören UND, ODER,
EXKLUSIV ODER, ERSETZEN, usw. Die Funktion kann ohne
Unterstützung der Hardware durchgeführt werden, ist jedoch sehr
platzintensiv und benötigt lange Ausführungszeiten.
-
Die Fähigkeit eine Reihe von Pel-Daten an einer beliebigen
Pel- oder Pixel-Speicherstelle im Speicher zu lesen oder zu
schreiben wird als Bitadressierbarkeit bezeichnet. Diese
Fähigkeit war aufgrund des herkömmlichen Layouts und der
Steuerung des Bitabbildungsspeichers nur auf horizontale Pel-
Reihen beschränkt, entlastete jedoch dennoch die Software.
-
Ein Beispiel für einen Bildverarbeitungsspeicher ist in der
US-Patentschrift US-A-4 090 174 mit dem Titel 'Method and
Apparatus for accessing Horizontal Sequences, Vertical
Sequences and Rectangular Subarrays from an Array Stored in a
Modified Word Organised Random Access Memory System' beschrieben,
die auf diesen Empfänger übertragen wurde.
-
Ein Beispiel für ein Bildmanipulationssystem mit einem
Bildverarbeitungsspeicher wird in der US-Patentschrift US-A-3 976
982 mit dem Titel 'Apparatus for Image Manipulation'
beschrieben, die auf diesen Empfänger übertragen wurde. Das System
führt Stellenübersetzung, selektive Größenbestimmung, Spiegeln
und Umdrehung von Schwarz/Weiß-Bildern durch, wobei jedes Pel
nur durch ein Bit dargestellt ist.
-
Die Erfindung stellt gemäß den Ansprüchen ein
Datenanzeigesystem mit einer Speicherschaltung vor, wobei das System
Speicherschaltmittel zum Speichern bitadressierbarer binären Daten
umfaßt, die anzuzeigende Bildelemente darstellen, und die
Daten in zweidimensionaler Richtung angeordnet sind; Mittel
zum Zugriff auf einen rechteckigen Block von Bildelementdaten
im Speicherschaltmittel in den beiden dimensionalen
Richtungen, wobei die Zugriffsmittel Mittel zur Inkrement- oder
Dekrementadressierung des Datenblocks in mindestens einer
dimensionalen Richtung umfassen; und Mittel zum Bewegen des
Datenblocks zu einer anderen dimensionalen Stelle, während die
Daten innerhalb des Blocks aufrechterhalten bleiben, wobei die
Bewegungsmittel Mittel zum Lesen der Daten im
Speicherschaltmittel in einer ersten dimensionalen Richtung und zum
Schreiben der Daten in einer zweiten anderen dimensionalen Richtung
umfassen; das System ist dabei dadurch gekennzeichnet, daß die
Zugriffsmittel des weiteren Mittel zum Zugriff auf eine
variable Anzahl von Bits in einer Zugriffsoperation umfassen.
-
Die Zugriffsmittel umfassen weiterhin Mittel zum Durchführen
von logischen Operationen auf den an verschiedenen
Speicherstellen und in verschiedenen dimensionalen Richtungen im
Speicherschaltmittel gespeicherten Daten, wobei die logischen
Operationsmittel darüber hinaus Mittel zum Zugriff auf einen
ersten Datenblock als Quelldaten und einen zweiten Datenblock
aus Zieldaten umfassen, die Mittel eine logische Operation auf
den Quell- und Zieldaten durchführen und die Enddaten auf den
Adressen der Zieldaten speichern.
-
Um die Erfindung besser zu verstehen, wird ein bevorzugtes
Ausführungsbeispiel nachfolgend anhand von Begleitzeichnungen
beschrieben.
-
Fig. 1 ist ein Blockdiagramm des mikrocodierten Prozessors.
-
Die Fig. 2a und 2b sind Fließdiagramme der Schritte, die
vom Prozessor unternommen werden, um die hier beschriebene
Funktion durchzuführen.
-
Fig. 3 zeigt die Misch- oder Kopierfunktion der
Bitblockübertragung, bei der das Zielrechteck physisch über dem
Quellrechteck liegt.
-
Fig. 4 zeigt die Misch- oder Kopierfunktion der
Bitblockübertragung, bei der das Zielrechteck physisch unter dem
Quellrechteck liegt.
-
Fig. 5 zeigt die Misch- oder Kopierfunktion der
Bitblockübertragung, bei der das Zielrechteck physisch links vom
Quellrechteck liegt.
-
Fig. 6 zeigt die Misch- oder Kopierfunktion der
Bitblockübertragung, bei der das Zielrechteck physisch rechts vom
Quellrechteck liegt.
-
Fig. 7 zeigt die Misch- oder Kopierfunktion der
Bitblockübertragung um +90 Grad.
-
Fig. 8 zeigt die Misch- oder Kopierfunktion der
Bitblockübertragung um -90 Grad.
-
Fig. 9 zeigt die X-achsensymmetrische Misch- oder
Kopierfunktion der Bitblockübertragung um 180 Grad.
-
Fig. 10 zeigt die Y-achsensymmetrische Misch- oder
Kopierfunktion der Bitblockübertragung um 180 Grad.
-
Bezug nehmend auf die Zeichnen wird ein System vorgestellt,
das Bitblockübertragungen innerhalb der
Anzeigespeicherabbildung durchführt. Die Erfindung umfaßt dabei einen Prozessor
und Schaltungen zusammen mit einem Mikrocode, um zahlreiche
Bitblockübertragungsfunktionen zu ermöglichen, zu denen
leistungsstarke Ausführungszeit und extrem wenig
Codeplatzbeanspruchung gehören.
-
Der mikrocodierte Prozessor wird als Rasterop-Vorrichtung
bezeichnet. Ein Raster ist ein Rechteck mit diskreten
Elementen, beispielsweise Bildelemente oder Punkte auf einem
Bildschirm. Die Rasterop-Vorrichtung ist ein Prozessor, der
Operationen auf Rastern durchführt. In diesem Fall handelt es
sich um Raster aus rechteckigen Bereichen, die aus
Bildeleinenten (Pixel oder Pels) bestehen.
-
Die einzigartigen Schaltungen ermöglichen innere und äußere
Schleifen des zu schreiben Bitblockübertragungscodes mit einem
Funktionssatz. Der gleiche Code kann jedoch unterschiedliche
Eigenschaften bieten, wenn er von unterschiedlichen Setup-
Codes entsprechend aktiviert wird. Durch die Verwendung
verschiedener Kombinationen dieser Hardware-Features können
zahlreiche nützliche Funktionen durchgeführt werden. Die
innere Schleife ist Bestandteil der Schritte 42, 44, 46, 48,
50 und 52 in Fig. 2b. Die äußere Schleife der Schritte 40,
54, 56, 58 und 60 in Fig. 2b.
-
Zu diesen Hardware-Features gehören Bitadressierbarkeit in
vertikaler und horizontaler Richtung (siehe die Patentschrift
EP-A-0191280, auf die hier als Referenz verwiesen wird mit
Bezug auf BAMDA oder bitadressierbares multidimensionales
Feld). Der Speicher ermöglicht das Lesen von 16 Bits und das
Schreiben von bis zu 16 Bits auf jeder Bitgrenze, während die
Schreibrichtung sowohl horizontal als auch vertikal sein kann.
Dadurch wird die Anfangsrandbedingung umgangen, die
normalerweise bei bitabgebildeten Anzeigen gegeben ist, die nicht über
Bitadressierbarkeit verfügen. Ohne Bitadressierbarkeit haben
die Quell- und Zieladressen nicht die gleiche Ausrichtung in
bezug auf die Byte- oder Wortgrenzen. Die Anfangsrandbedingung
erfordert möglicherweise zwei Lesezugriffe auf die Quelldaten,
plus Verschieben und Maskieren, um das Schreiben auf die
Zieladressen zu ermöglichen. Mit Hilfe der Bitadressierbarkeit
ist der Codeplatz weniger umfangreich und die Ausführungszeit
für die Bitblockübertragung geringer.
-
Hinzu kommt ein Logikfunktionsgenerator, um die Quell- und
Zieldaten miteinander zu verbinden. Dieser Vorgang wird
unabhängig von der Zugriffsrichtung auf die Quelldaten oder
der Zugriffsrichtung auf die Zieldaten problemlos
durchgeführt.
-
Des weiteren ist Maskenerzeugungs-Hardware vorhanden, die eine
Schreibmaske auf der Grundlage der inneren Schleifenzählung
des Bitblockübertragungscodes bildet. Das Anfangsrandproblem
wurde durch die Bitadressierbarkeit gelöst. Das Lesen und
Schreiben der Bitabbildung wird mit Slices von 16 Bits
fortgesetzt, bis die innere Schleifenzählung auf unter 16 fällt.
Normalerweise würde sich eine Routine zu einem externen Code
verzweigen, um das teilweise Schreiben am Ende der inneren
Schleife durchzuführen. Der externe Code würde eine Berechnung
ausführen und die richtige Schreibmaske für das partielle
Schreiben bilden. Bei dieser Erfindung ist dies nicht
erforderlich, da die Schreibmaske immer automatisch von der
Schaltung der inneren Schleifenzählung des
Bitblockübertragungscodes erzeugt wird, wodurch Codeplatz gespart und die
Ausführungszeit gekürzt wird.
-
Darüber hinaus sind Ink/Dek-Umschaltungen (Inkrement und
Dekrement) zum Ändern der Quell- und Zieladressen vorhanden.
Mit Hilfe dieser Ink/Dek-Umschaltung kann eine Schleife mit
zahlreichen Funktionen geschrieben werden. Während der
Ausführungszeit kann die Ink/Dek-Umschaltung aktiviert werden, um
die entgegengesetzte Funktion durchzuführen. Wenn die
Schaltung aktiviert ist, wird der Inkrementbefehl als Dekrement
durchgeführt, und umgekehrt. Dadurch kann der Coder
veranlassen,
daß eine Schleife verschiedene Funktionen durchführt,
indem einfach eine andere Setup-Routine verwendet wird. Dies
führt zu beträchtlichen Einsparungen beim Codeplatz.
-
Des weiteren ist eine Vertikaleinstellschaltung vorhanden, die
den Bitabbildungszugriff von der Standardrichtung (horizontale
Richtung) zur vertikalen Richtung ändert. Durch die Schaffung
von Setup-Routinen, bei denen die gleiche Schleife
verschiedene Funktionen durchführt, kann eine hohe Flexibilität
erzielt werden.
-
Eine 90 Grad-Umschaltung ändert die Zugriffsrichtung von
horizontal zu vertikal oder von vertikal zu horizontal. Damit kann
die gleiche Schleife unterschiedliche Funktionen durchführen,
je nachdem, ob die 90 Grad-Umschaltfunktion aktiviert ist.
-
Die nachfolgende Beschreibung zeigt, wie acht unterschiedliche
Bitblockübertragungsfunktionen von der gleichen inneren und
äußeren Codeschleife durchgeführt werden. Dies beruht auf
verschiedenen mikrocodierten Setup-Routinen, die in verschiedenen
Verbindungen die oben beschriebenen speziellen
Hardware-Schaltungen aktivieren.
-
Die Erfindung bezieht sich auf die Bewegung eines Pel-
Rechtecks von einer Quellstelle zu einer Zielstelle. Bei
dieser Implementierung wird eine einzigartige Kombination von
Hardware-Schaltungen verwendet, um eine große Anzahl von
Bitblockübertragungsfunktionen durchzuführen. Der Anfang des
Bildschirms befindet sich bei diesem Anzeigesystem in der
oberen linken Ecke. Die X-Adresse erhöht sich in positiver
Richtung nach rechts, und die Y-Adresse in positiver Richtung
zum unteren Rand des Bildschirms.
-
Fig. 1 ist ein Blockdiagramm der Rasterop-Vorrichtung und des
entsprechenden Bitabbildungsspeichers. Der Prozessor 20 holt
horizontal mikrocodierte Befehle, die verschiedene Teile der
Hardware steuern. Der Prozessor steuert die Funktionen des
Registerfelds 1, des X-Registers 9, des Y-Registers 8, der
Ink/Dek-Umschaltflags 3 und 4, des 90 Grad-Umschalt-Flag 5,
des Vertikal/Horizontal-Flag 6, der Maskengenerator-Hardware 7
und des Logikfunktionsgenerators 19. Der Prozessor steuert
diese Funktionen auf Leitung 21. Der Prozessor steuert darüber
hinaus die Rechen- und Steuereinheit 2 über Leitung 21, und
die Steuerflags 3, 4, 5 und 6, sowie Leitung 15. Der
bitadressierbare multidimensionale Zugriffsspeicher (BAMDA) 10 stellt
den Speicher für die Bitabbildung dar, wo sich die Quell- und
Zieldaten befinden. BAMDA bezieht sich auf die Patentschrift
EP-A-0191280, auf die hier als Referenz verwiesen wird. Das X-
Register 9 und das Y-Register 8 liefern die Adresse über die
Leitungen 16 und 17 zum Speicher 10. Diese Adressen kommen vom
Registerfeld 1 über die ALU (Rechen- und Steuereinheit) 2 auf
Leitung 12. Die Adressen können zum Registerfeld 1
zurückgebracht werden, oder entweder zu den Speicheradressen von X-
Register 9 oder Y-Register 8 auf Leitung 11 gesendet werden.
Die Zugriffsrichtung (horizontal oder vertikal) auf den
Speicher 10 wird durch die Verbindung des 90 Grad-Umschalt-Flag 5
und des Vertikal/Horizontal-Flag 6 auf Leitung 15 gesteuert.
Wenn Daten in den Speicher 10 geschrieben werden, legen das 90
Grad-Umschalt-Flag 5 und das Vertikal/Horizonal-Flag 6 die
Zugriffsrichtung über Leitung 15 fest. Um die Schreibmaske zu
bilden, wird die innere Schleifenzählung im Registerfeld 1 auf
Leitung 12 zum Maskengenerator 7 gesendet, der eine
kombinatorische Logik ist, auf die an späterer Stelle noch eingegangen
wird. Der Maskengenerator 7 gibt an die Schreibsteuerlogik des
Speichers 10 auf Leitung 13 aus. Die Quelldaten werden mit den
Zieldaten durch den Logikfunktionsgenerator 19 (der eine noch
erörterte kombinatorische Logik ist) auf Leitung 18 verbunden.
Die äußeren Schleifenvariablen im Registerfeld 1 werden zur
ALU 2 auf Leitung 12 gesendet und durch die
Ink/Dek-Umschaltfunktionsflags 3 und 4 inkrementiert oder dekrementiert. Diese
Steuer-Flags werden auf Leitung 15 zur ALU 2 gesendet.
-
Der Maskengenerator 7 umfaßt ein Netz von kombinatorischen
Logiken, die entsprechend den Angaben in Tabelle I arbeiten.
-
Die Tabelle zeigt, wie die zehn Bits der inneren
Schleifenzählung vom Registerfeld 1 durch die kombinatorische Logik 7 in
die Schreibmaske umgewandelt werden. Es wird immer die gleiche
Anzahl von Bits vom Bitabbildungsspeicher 10 gelesen,
gelegentlich ist jedoch der Fall gegeben, wo weniger Bits in den
Bitabbildungsspeicher geladen werden sollen. Im bevorzugten
Ausführungsbeispiel ermöglicht die Schreibmaske das selektive
Schreiben einer beliebigen Anzahl von Bits, beispielsweise von
0 bis 16. In Tabelle zeigt die zweite Spalte mit der
Überschrift "Ausgang des Maskengenerators" die sich ergebende
Schreibmaske mit Bezug auf die innere Schleifenzählung in der
ersten Spalte. Die binären Einsen in der Schreibmaske weisen
darauf hin, daß das entsprechende Bit aktualisiert wird. Eine
binäre Null zeigt an, daß das entsprechende Bit im
Bitabbildungsspeicher nicht aktualisiert wird. Die Bitadressierbarkeit
des Bitabbildungsspeichers 10 in vertikaler und horizontaler
Richtung bedeutet, daß sich das am weitesten links liegende
Bit der Schreibmaske auf das Bit auswirkt, das durch die 10-
Bit Y-Adresse im Y-Register 8 und die 10-Bit X-Adresse im X-
Register 9 angezeigt wird. Die anderen Bits in der Reihe der
zu schreibenden Bits befinden sich in positiver Richtung. Wenn
die Zugriffsrichtung horizontal ist, werden sie in positiver
Richtung (nach rechts) in Bezug auf das am weitesten links
gelegene Bit der Schreibmaske geschrieben. Wenn die
Zugriffsrichtung vertikal ist, werden sie in positiver Richtung (nach
unten) in Bezug auf das am weitesten links gelegene Bit der
Schreibmaske geschrieben. Der Schreibmaskengenerator 7 bildet
eine Schreibmaske von der inneren Schleifenzählung im
Registerfeld 1. Der Anfangswert für die innere Schleifenzählung
ist die Anzahl der zu schreibenden Pels minus eins. Dies wird
nachfolgend anhand des Fließdiagramms von Fig. 2a und 2b noch
näher erläutert. Der Grund, warum der Maskengenerator 7 die
Anzahl der zu schreibenden Pels minus eins verwendet, liegt in
der konditionalen Verzweigungslogik des Mikrocodes.
Gleichzeitig mit dem Abziehen der gelesenen Pels sollte auch erfaßt
werden, wann die innere Schleife beendet ist. Die einzige
geeignete Bedingung ist dann gegeben, wenn die innere
Schleifenzählung
weniger als Null (negativ) ist. Wenn die
Schreibmaske von der Anzahl von Pels minus eins anstatt nur von der
Anzahl der Pels erzeugt wird, kann größere Effizienz erreicht
werden, da die konditionalen Verzweigungen aufgrund von
Implementierungszwängen nicht verbessert werden.
-
Der Logikfunktionsgenerator 19 in Fig. 1 führt logische
Operationen auf dem Dateneingang des Bitabbildungsspeichers 10
durch. Es kann sich hierbei um ein Texas Instruments-Gerät der
Nummer 74181 oder um ein anderes erhältliches Gerät mit
ähnlichen Funktionen handeln.
-
Fig. 2a und 2b ist ein Fließdiagramm, das die 8 verschiedenen
Setup-Routinen 30, 31, 32, 33, 34, 35, 36 und 37 zeigt, die in
die innere und äußere Schleife eingespeist werden. Die innere
Schleife besteht aus den Befehlen 42, 44, 46, 48, 50 und 52.
Die äußere Schleife besteht aus den Befehlen 40, 54, 56, 58
und 60. Der Pfad in die innere und äußere Schleife von Fig.
2b beginnt mit einer von fünf spezifizierten Operationen. Wenn
die Operation wie in den Fig. 3 bis 6 gezeigt eine
Kopierfunktion ist, stellt der Mikrocode fest, welcher der vier
Fälle auf diese bestimmte Kopieroperation zutrifft. Der
entsprechende Setup-Code 30, 31, 32 oder 33 wird ausgewählt
und wie in Fig. 2a und 2b gezeigt auf die entsprechenden
Leitungen 62, 64, 66 und 68 verzweigt. Die anderen vier
Kopierfunktionen werden direkt spezifiziert, und der
entsprechende Setup-Code 34, 35, 36 oder 37 wird mittels der
entsprechenden Leitungen 70, 72, 74, und 76 verzweigt. Die 8
Mikrocode-Funktionen, die in die gleiche innere Schleife 30, 31,
32, 33, 34, 35, 35 und 37 eingespeist werden, verwenden
unterschiedliche Kombinationen der beiden Ink/Dek-Umschalt-Flags 3
und 4 in Fig. 1, des 90 Grad-Umschalt-Flag 5 und des
Vertikal/Horizontal-Flag 6. Durch die Kombinierung dieser Steuer-
Flags können einzelne innere und äußere Mikrocode-Schleifen
acht verschiedene Funktionen durchführen. Das Fließdiagramm
wird für den Standardfall noch näher erläutert, wo die Quell-
und Zielrechtecke sich überschneiden, wobei sich das Ziel
rechteck wie in Fig. 3 gezeigt physisch über dem
Quellrechteck befindet.
-
Die Fig. 3 bis 10 zeigen, wie diese Hardware-Features
kombiniert werden, um die 8 Bitblockübertragungsfunktionen
dieser Erfindung auf einer Anzeige 100 zu bilden. In den
Fig. 3 bis 6 werden die Fälle dargestellt, bei denen die
Bitblockübertragung ein Misch- oder Kopiervorgang ist und die
Quell- und Zielrechtecke überlappen. Misch- oder
Kopieroperationen dieser Art drehen die Daten bei der Übertragung nicht.
Die Quelle wird in gleicher Richtung (horizontal oder
vertikal) gelesen, wie das Ziel geschrieben wird.
-
Fig. 3 stellt den Fall dar, bei dem das Zielrechteck sich
physisch über dem Quellrechteck befindet. Dies kann als
Standardfall angesehen werden, während alle anderen sieben
Fälle Variationen davon sind. Der Umfang der horizontalen
Verschiebung zwischen Quelle und Ziele spielt keine Rolle. Der
Zugriff auf die Bitabbildung ist horizontal sowohl für das
Quell- als auch das Zielrechteck, und die äußere Schleife
inkrementiert die Quell- und Ziel-Y-Adressen. Die innere
Schleife liest die Quelle und schreibt das Ziel von links nach
rechts in horizontalem Modus, bis die innere Schleife
abgelaufen ist. Um den nächsten Teil des Rechtecks abzutasten,
inkrementiert die äußere Schleife für die Quell- und Zieladressen
die Y-Adresse. Die innere Schleifenzählung wird vom
Registerfeld 1 in Fig. 1 aufgefrischt, und ein weiterer Teil des
Rechtecks wird von links nach rechts abgetastet.
-
Das in Fig. 3 gezeigte Beispiel wird verwendet, um das
Fließdiagramm in den Fig. 2a und 2b zu erklären. In diesem Fall
befindet sich das Zielrechteck über dem Quellrechteck. Dies
entspricht 30 in Fig. 2. Dieser Setup-Code setzt keines der
Steuer-Flags. Es setzt weder die beiden Ink/Dek-Umschalt-Flags
3 oder 4, noch das 90 Grad-Umschalt-Flag 5, noch das
Vertikal/Horizontal-Flag 6. Der äußere Schleifenschritt 40 lädt die
innere Schleifenzählung von einem Register, das eine Kopie der
inneren Schleifenzählung bereithält. Beide Register befinden
sich im Registerfeld 1 von Fig. 1. Im Fall von Fig. 3 ist
die innere Schleifenzählung die Anzahl der Pels in
horizontaler Richtung minus eins, oder in anderen Worten die Breite des
Rechtecks minus eins.
-
Mit Schritt 42 beginnt die innere Schleife. Bei diesem Schritt
werden die Daten des Quellrechtecks gelesen. Da das
Vertikal/Horizontal-Flag 6 nicht vom Setup-Code 30 in der
Standardrichtung (horizontal) geändert wurde, wird in horizontaler
Richtung auf die Quelle zugegriffen. Bei Schritt 44 erfolgt
keine Operation, da das 90 Grad-Umschalt-Flag 5 nicht gesetzt
wurde. Wenn das 90 Grad-Umschalt-Flag gesetzt worden wäre,
wäre die Zugriffsrichtung von horizontal auf vertikal geändert
worden, oder umgekehrt. Die bei Schritt 42 gelesenen Daten
werden durch Schritt 46 in den Speicher 10 geschrieben. Da
Schritt 44 die Speicherzugriffsrichtung nicht geändert hat,
und da die Anfangszugriffsrichtung des Setup-Codes 30
horizontal war, werden die Daten in horizontaler Richtung in den
Speicher 10 geschrieben. Bei Schritt 48 wird keine Operation
unternommen, da der Setup-Code das 90 Grad-Umschalt-Flag 5
nicht aktiviert (gesetzt) hat. Schritt 50 dekrementiert die
innere Schleifenzählung um die Anzahl der Pels, die während
eines Speicherzugriffs gelesen werden. Schritt 52 prüft, ob
die innere Schleifenzählung abgelaufen ist. Wenn mehr Pels zur
Vervollständigung der Breite des Rechtecks in Fig. 3
vorhanden sind, wird zurück zu Schritt 42 gegangen und der innere
Schleifenprozeß fortgesetzt. Wenn die innere Schleifenzählung
abgelaufen ist, geht die Steuerung an Schritt 54, der die
äußere Schleifenzählung um 1 dekrementiert. Wenn der letzte
Schreibvorgang nur ein teilweises Schreiben beinhaltet
(weniger als 16 Bits), wird die entsprechende Schreibmaske
richtig erzeugt, da die innere Schleifenzählung im
Registerfeld 1 immer zum Maskengenerator 7 auf Leitung 12 gesendet
wird. Wenn die innere Schleifenzählung 15 oder mehr beträgt,
ist die Anzahl der geschriebenen Bits 16. Wenn die innere
Schleifenzählung jedoch weniger als 15 beträgt, wird die
Anzahl der Bits geschrieben, die der inneren Schleifenzählung
plus eins entspricht.
-
Sobald die innere Schleifenzählung abgelaufen ist, geht die
Steuerung zu Schritt 54. Bei diesem Schritt wird die äußere
Schleifenzählung um eins dekrementiert. Die äußere
Schleifenzählung ist die Anzahl der Pels, die die orthogonale Seite des
Rechtecks in Bezug zu der von der inneren Schleife
abgetasteten Seite darstellt. In Fig. 3 handelt es sich dabei um die
vertikale Seite 90, oder in anderen Worten um die Höhe des
Rechtecks. Schritt 56 prüft, ob die äußere Schleifenzählung
abgelaufen ist. Wenn dies der Fall ist, ist die
Bitblockübertragung beendet. Andernfalls müssen noch weitere Schritte
ausgeführt werden, so daß die Steuerung zu Schritt 58 geht.
Schritt 58 ist codiert und inkrementiert im Standardfall die
äußere Schleifenadresse des Quellrechtecks. Wenn das Ink/Dek-
Umschalt-Flag eins 3 vom Setup-Code gesetzt wurde, wird die
äußere Schleifenadresse des Quellrechtecks dekrementiert. Im
Fall von Fig. 3 wurden kein Ink/Dek-Umschalt-Flag vom Setup-
Code 30 gesetzt, so daß Schritt 58 als Inkrementierung
ausgeführt wird. Schritt 60 ist mit Schritt 58 vergleichbar,
bezieht sich jedoch auf die äußere Schleifenadresse des
Zielrechtecks. Schritt 60 inkrementiert die äußere
Zielschleifenadresse, sofern das Ink/Dek-Umschalt-Flag 4 in Fig. 1
nicht vom Setup-Code gesetzt wurde. Wenn der Setup-Code die
Ink/Dek-Umschalt-Flagnummer zwei 4 in Fig. 1 gesetzt
(aktiviert) hätte, würde dies die äußere Zielschleifenadresse
dekrementieren. Da das Ink/Dek-Umschalt-Flag Nummer zwei 4
nicht vom Setup-Code 30 gesetzt wurde, inkrementiert Schritt
60 die äußere Zielschleifenadresse. Die Steuerung geht zu
Schritt 40 zurück, der die zuvor abgelaufene innere
Schleifenzählung wiederherstellt, und die innere Schleifenzählung fährt
wie oben beschrieben fort.
-
Zusammenfassend zu Fig. 3 läßt sich sagen, daß die innere
Schleife in horizontaler Richtung auf das Quellrechteck
zugreift und die X-Adresse des Quellrechtecks inkrementiert.
-
Die innere Schleife greift in horizontaler Richtung auf das
Zielrechteck zu und inkrementiert die X-Adresse des
Zielrechtecks. Die äußere Schleife inkrementiert die Y-Adresse
des Quellrechtecks und die Y-Adresse des Zielrechtecks.
-
Fig. 4 zeigt den Fall, bei dem sich das Zielrechteck physisch
unter dem Quellrechteck befindet. Wie in Fig. 3 spielt die
horizontale Verschiebung zwischen Quell- und Zielrechteck
keine Rolle. Fig. 4 zeigt, daß der Quell- und Zielzugriff
immer noch horizontal ist, die Ink/Dek-Umschaltfunktionen 3
und 4 in Fig. 1 wurden jedoch aktiviert, um die Y-Adressen
der Quell- und Zielrechtecke durch die äußere Schleife zu
aktualisieren. Dies führt dazu, daß das Rechteck bei der
inneren Schleife von links nach rechts, und bei der äußeren
Schleife von unten nach oben abgetastet wird. Solange die
vertikale Verschiebung in Fig. 3 und Fig. 4 nicht Null ist,
wird das Ziel ohne Beeinträchtigung der Quelldaten
geschrieben. Der Setup-Code, der die Flags 3 und 4 setzt, ist Block 31
in Fig. 2. Die Schritt 58 und 60 führen aufgrund der
Aktivierung der Ink/Dek-Umschalt-Flags 3 und 4 in Fig. 1 durch den
Setup-Code 31 in Fig. 2 eine Dekrementierung durch.
-
Zusammenfassend zu Fig. 4 läßt sich sagen, daß die innere
Schleife auf das Quellrechteck in horizontaler Richtung
zugreift und die X-Adresse inkrementiert. Die innere Schleife
greift in horizontaler Richtung auf das Zielrechteck zu und
inkrementiert die X-Adresse. Die äußere Schleife dekrementiert
die u-Adresse des Quellrechtecks und die Y-Adresse des
Zielrechtecks.
-
Fig. 5 zeigt den Fall einer vertikalen Null-Verschiebung
zwischen Quelle und Ziel, wobei das Zielrechteck sich physisch
links von der Quelle befindet. Da die horizontale Verschiebung
eine beliebige Pel-Zahl betragen kann, ist der sicherste Weg
zum Lesen der Quelle und Schreiben des Ziels in der inneren
Schleife die vertikale Richtung. Dies wird dadurch erreicht,
daß der Setup-Code 32 das Vertikal/Horizontal-Flag 6 in Figur
1 in den vertikalen Modus setzt. Die Quelle wird bei Schritt
42 in vertikaler Richtung gelesen. Bei Schritt 44 wird keine
Operation durchgeführt, da das 90 Grad-Umschalt-Flag 5 vom
Setup-Code nicht gesetzt (aktiviert) wurde. Das Schreiben der
Quelle findet im vertikalen Modus statt und Schritt 48 hat
entsprechend keinen Einfluß auf die Zugriffsrichtung. Die
Ink/Dek-Flags 3 und 4 in Fig. 1 werden vom Setup-Code 32
nicht gesetzt (aktiviert). Die Schritte 58 und 60 führen
Inkrementierungen zur Aktualisierung der äußeren Ziel- und
Quellschleifenadressen durch. Das Rechteck wird bei der
inneren Schleife von oben nach unten abgetastet, und in der
äußeren Schleife von rechts nach links. Der Setup-Code, der das
Steuer-Flag 6 setzt, ist Block 32 in Fig. 2.
-
Zusammenfassend zu Fig. 5 läßt sich sagen, daß die innere
Schleife in vertikaler Richtung auf das Quellrechteck zugreift
und die Y-Adresse inkrementiert. Die innere Schleife greift in
vertikaler Richtung auf das Zielrechteck zu und inkrementiert
die Y-Adresse. Die äußere Schleife inkrementiert die X-Adresse
des Quellrechtecks und die X-Adresse des Zielrechtecks.
-
Fig. 6 zeigt den Fall, bei dem eine vertikale
Null-Verschiebung zwischen Quelle und Ziel stattfinden, das Zielrechteck
sich jedoch physisch rechts von der Quelle befindet. Wie bei
Fig. 5 ist der Zugriff vertikal, d. h. das
Vertikal/Horizontal-Flag 6 ist so gesetzt, daß in Fig. 6 die
Quell- und Zieladressen der äußeren Schleife dekrementiert
werden. Dies wird durch das Aktivieren der
Ink/Dek-Umschaltfunktionen durch die Ink/Dek-Umschalt-Flags 3 und 4 in Fig. 1
durchgeführt. Die Schritte 58 und 60 werden demzufolge nach
als Dekrementierungen der äußeren Schleifenziel- und -
quelladressen durchgeführt. Das Rechteck wird in der inneren
Schleifen von oben nach unten abgetastet, und in der äußeren
Schleife von rechts nach links. Mit diesem Fall ist die
überlappende Misch- oder Kopierfunktion der
Bitblockübertragung abgeschlossen. Der Setup-Code, der die Flags 3, 4 und 6
setzt, ist Block 33 in Fig. 2.
-
Zusammenfassend zu Fig. 6 läßt sich sagen, daß die innere
Schleife in vertikaler Richtung auf das Quellrechteck zugreift
und die Y-Adresse inkrementiert. Die innere Schleife greift in
vertikaler Richtung auf das Zielrechteck zu und inkrementiert
die Y-Adresse. Die äußere Schleife dekrementiert die X-Adresse
des Quellrechtecks und die X-Adresse des Zielrechtecks.
-
Die Fig. 7 bis 10 zeigen die zusätzlichen
Bitblockübertragungsfunktionen. In diesen Fällen überlappen die Quell- und
Zielrechtecke nicht. Eine +90 Grad-Umdrehung bedeutet, daß die
Daten im Uhrzeigersinn um 90 Grad gedreht werden. Bei einer -
90 Grad-Umdrehung werden die Daten im Gegenuhrzeigersinn um 90
Grad gedreht.
-
Fig. 7 zeigt die Umdrehung der Zieldaten um +90 Grad in Bezug
auf die Quelldaten. Eine Setup-Routine 34 setzt das 90 Grad-
Umschalt-Flag 5 von Fig. 1, so daß die Zugriffsrichtung
zwischen dem Lesen der Quelldaten und dem Schreiben der
Zieldaten geändert wird. Der Setup-Code 34 behält die
Standardrichtung des Speicherzugriffs bei, die in diesem Fall
horizontal ist, setzt jedoch das 90 Grad-Umschalt-Flag 5.
Schritt 42 liest die Quelle in horizontaler Richtung. Bei
Schritt 44 wird die Zugriffsrichtung um 90 Grad geändert, da
das 90 Grad-Umschalt-Flag 5 gesetzt wurde. Das Ziel wird daher
in vertikaler Richtung in Schritt 46 geschrieben. Bei Schritt
48 wird die Richtung erneut um 90 Grad auf horizontal
geändert. Die Ziel-X-Adresse wird unter Verwendung des
Ink/Dek-Umschalt-Flag 4 von Fig. 1 dekrementiert. Schritt 58
führt eine Standardinkrementierung der äußeren
Zielschleifenadresse durch, und Schritt 60 eine Dekrementierung der
äußeren Zielschleifenadresse. Das Quellrechteck wird von der
inneren Schleife daher horizontal abgetastet, und von der
äußeren Schleife von oben nach unten. Das Zielrechteck wird in
der inneren Schleife vertikal abgetastet, und in der äußeren
Schleife von rechts nach links. Dadurch wird eine +90 Grad-
Umdrehung der Daten durchgeführt.
-
Zusammenfassend zu Fig. 7 läßt sich sagen, daß die innere
Schleife in horizontaler Richtung auf das Quellrechteck
zugreift und die X-Adresse inkrementiert. Die innere Schleife
greift in vertikaler Richtung auf das Zielrechteck zu und
inkrementiert die Y-Adresse. Die äußere Schleife inkrementiert
die Y-Adresse des Quellrechtecks und dekrementiert die X-
Adresse des Zielrechtecks.
-
Fig. 8 zeigt die Umdrehung der Zieldaten um -90 Grad in Bezug
auf die Quelldaten. Eine Setup-Routine 35 setzt das
Vertikal/Horizontal-Flag 6 von Fig. 1 auf vertikal und setzt das
90 Grad-Umschalt-Flag 5 von Fig. 1, so daß die
Zugriffsrichtung zwischen dem Lesen der Quelldaten und dem Schreiben der
Zieldaten geändert wird. Das Setzen des Vertikal/Horizontal-
Flag 6 setzt die Zugriffsrichtung auf vertikal im Setup-Code.
In Schritt 42 werden die Quelldaten daher in vertikaler
Richtung gelesen. Das 90 Grad-Umschalt-Flag 5 wird gesetzt, so daß
in Schritt 44 die Zugriffsrichtung auf horizontal geändert
wird. Bei Schritt 46 werden die Zieldaten in horizontaler
Richtung geschrieben. Das 90 Grad-Umschalt-Flag 5 ist immer
noch gesetzt, so daß in Schritt 48 die Zugriffsrichtung zurück
auf vertikal geändert wird. Die Ziel-Y-Adresse wird unter
Verwendung des Ink/Dek-Umschalt-Flag 4 von Fig. 1
dekrementiert. Bei Schritt 58 wird die äußere Quellschleifenadresse
inkrementiert (Standardfall), während das Ink/Dek-Umschalt-
Flag 4 in Schritt 60 dafür sorgt, daß die äußere
Zielschleifenadresse dekrementiert wird. Das Quellrechteck wird somit
von der inneren Schleife vertikal abgetastet, und von links
nach rechts in der äußeren Schleife. Das Zielrechteck wird von
der inneren Schleife horizontal abgetastet, und von oben nach
unten in der äußeren Schleife. Dadurch wird eine -90 Grad-
Umdrehung der Daten durchgeführt.
-
Zusammenfassend zu Fig. 8 läßt sich sagen, daß die innere
Schleife in vertikaler Richtung auf das Quellrechteck zugreift
und die Y-Adresse inkrementiert. Die innere Schleife greift in
horizontaler Richtung auf das Zielrechteck zu und
inkrementiert
die X-Adresse. Die äußere Schleife inkrementiert die X-
Adresse des Quellrechtecks und dekrementiert die Y-Adresse des
Zielrechtecks.
-
Fig. 9 zeigt, wie die Daten kopiert werden können, so daß
eine X-Achsensymmetrie von 180 Grad entsteht. Das Ziel ist ein
Bild der Quelle, das um die X-Achse gespiegelt wird, und dann
mit dem Ziel gemischt oder darauf kopiert wird. Der Zugriff
auf die Quell- und Zielrechtecke ist horizontal. Der Setup-
Code setzt das Ink/Dek-Umschalt-Flag 4 in Fig. 1, so daß die
Ziel-Y-Adresse in Schritt 60 dekrementiert wird. Die Quelle
wird bei der inneren Schleife horizontal abgetastet, und in
der äußeren Schleife von oben nach unten. Das Ziel wird von
der inneren Schleife horizontal abgetastet, und von unten nach
oben von der äußeren Schleife. Der Setup-Code, der das
Ink/Dek-Umschalt-Flag 4 setzt, ist Block 36 in Fig. 2.
-
Zusammenfassend zu Fig. 9 läßt sich sagen, daß die innere
Schleife in horizontaler Richtung auf das Quellrechteck
zugreift und die X-Adresse inkrementiert. Die innere Schleife
greift in horizontaler Richtung auf das Zielrechteck zu und
inkrementiert die X-Adresse. Die äußere Schleife inkrementiert
die Y-Adresse des Quellrechtecks und dekrementiert die Y-
Adresse des Zielrechtecks.
-
Fig. 10 zeigt, wie eine Y-achsensymmetrische Misch- oder
Kopierfunktion der Bitblockübertragung um 180 Grad
durchgeführt werden kann. Das Vertikal/Horizontal-Flag 6 von Fig. 1
wird in den vertikalen Modus gesetzt. Das Ink/Dek-Umschalt-
Flag 4 von Fig. 1 wird für die Ziel-X-Adresse aktiviert. Das
Quellrechteck wird in der inneren Schleife von oben nach
unten, und von links nach rechts in der äußeren Schleife
abgetastet. Das Zielrechteck wird von oben nach unten in der
inneren Schleife, und von rechts nach links in der äußeren
Schleife abgetastet. Dadurch werden die Quelldaten um 180 Grad
um die Y-Achse gespiegelt und mit dem Ziel gemischt oder
darauf kopiert. Der Setup-Code, der die Flags 6 und 4 setzt, ist
Block 37 in Fig. 2.
-
Zusammenfassend zu Fig. 10 läßt sich sagen, daß die innere
Schleife in vertikaler Richtung auf das Quellrechteck zugreift
und die Y-Adresse inkrementiert. Die innere Schleife greift in
vertikaler Richtung auf das Zielrechteck zu und inkrementiert
die Y-Adresse. Die äußere Schleife inkrementiert die X-Adresse
des Quellrechtecks und dekrementiert die X-Adresse des
Zielrechtecks.
-
Tabelle II faßt die Kombinationen der verschiedenen
Zugriffsrichtungen auf die Quell- und Zielrechtecke sowie die
Verwendung der Inkrementierungs- und Dekrementierungsfunktionen der
äußeren Schleife zusammen. Durch die Verwendung der oben
beschriebenen speziellen Hardware-Features können die
Bitblockübertragungsaufgaben in mindestens acht verschiedene
Fälle aufgeteilt werden. Dadurch wird nicht nur Codeplatz
gespart, sondern auch die Ausführungszeit verkürzt. Noch mehr
Platz kann gespart werden, wenn die gleiche innere und äußere
Schleife in allen acht beschriebenen Fällen verwendet wird.
Die Gesamtcodezahl der inneren und äußeren Schleife betrug 23
Befehle. Die Setup-Befehle für die Fig. 3 bis 6 belaufen
sich insgesamt auf 29. Für das Setup der +90 Grad-Umdrehung
(Fig. 7) und der -90 Grad-Umdrehung (Fig. 8) wurden jeweils
4 Befehle benötigt. Das Setup für die X-Achsensymmetrie von
180 Grad (Fig. 9) und die Y-Achsensymmetrie von 180 Grad
(Fig. 10) beinhaltete jeweils 2 Befehle. Damit beläuft sich
die Zahl insgesamt auf 64 (dezimal) Befehle. Der horizontale
Mikrocode bietet zusammen mit den speziell entworfenen
Hardware-Features eine leistungsstarke Rasterop-Vorrichtung, die
sich ideal für Bitblockübertragungsoperationen eignet.