DE3441640A1 - Streifenfeldspeichercontroller - Google Patents
StreifenfeldspeichercontrollerInfo
- Publication number
- DE3441640A1 DE3441640A1 DE19843441640 DE3441640A DE3441640A1 DE 3441640 A1 DE3441640 A1 DE 3441640A1 DE 19843441640 DE19843441640 DE 19843441640 DE 3441640 A DE3441640 A DE 3441640A DE 3441640 A1 DE3441640 A1 DE 3441640A1
- Authority
- DE
- Germany
- Prior art keywords
- character
- line
- memory
- source
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 238000012360 testing method Methods 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 9
- 230000015572 biosynthetic process Effects 0.000 claims description 6
- 230000006870 function Effects 0.000 claims description 6
- 238000012546 transfer Methods 0.000 claims description 6
- 238000000605 extraction Methods 0.000 claims description 2
- 230000001419 dependent effect Effects 0.000 claims 2
- 238000001545 Page's trend test Methods 0.000 claims 1
- 238000000034 method Methods 0.000 description 32
- 230000008569 process Effects 0.000 description 28
- 230000009471 action Effects 0.000 description 6
- 230000004913 activation Effects 0.000 description 6
- 238000012790 confirmation Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000007519 figuring Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K2215/00—Arrangements for producing a permanent visual presentation of the output data
- G06K2215/0002—Handling the output data
- G06K2215/0062—Handling the output data combining generic and host data, e.g. filling a raster
- G06K2215/0065—Page or partial page composition
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Record Information Processing For Printing (AREA)
- Controls And Circuits For Display Device (AREA)
- Dot-Matrix Printers And Others (AREA)
Description
10
Die Erfindung betrifft eine Zeichendruckvorrichtung und speziell eine Vorrichtung zum übertragen von Zeichendaten
zwischen einer Datenquelle, wie z.B. einer Wortprozessorquelle, und einem Hochgeschwindigkeitsdrucker,
wie z.B. einem Laserdrucker.
In Verbindung mit einem Abtastkopierer erlaubt die Erfindung den Empfang von grafischen Zeichen in jeglicher
Reihenfolge, wahrt den festen Abtastdruckbetrieb während des Drückens und beseitigt die Notwendigkeit, eine Speicherung
eines vollen grafischen Bildes dessen, was gedruckt werden soll, vorzusehen. Statt dessen ist nur die Speicherung
eines kleinen Teils des gesamten Bildes erforderlich,
^RAMM SPECHTZIES
Die Erfindung kann Anwendung finden in Vorrichtungen, bei denen ein geordnetes Rasterabtastbild aus einem Satz
von anfänglich ungeordneten grafischen Zeichen erzeugt werden soll. Grafische Zeichen sollen verstanden werden
als verdichtete Repräsentationen von Teilen eines grafischen Bildes, welche Ideogramme, Text oder andere grafische Objekte
beschreiben können, wobei jedes spezifische oder implizite Koordinaten hat, an welchen es im fertigen Bild
angeordnet sein soll. Die bevorzugte Ausführungsform der Erfindung findet Platz in einem Kopierer, der ein Bild
druckt durch Abtasten Zeile für Zeile, wobei jede Zeile neben der nächsten liegt, während Daten von einem Host
empfangen werden, der Zeichen in einer frei wählbaren Textordnung erzeugt, wie sie z.B. ein typisches Wortprozessorsystem
zu einem damit verbundenen Typendrucker senden könnte.
Bei solch einer Vorrichtung ist es wünschenswert, Daten im Quellformat zu einer Speichervorrichtung mit frei
wählbarem Zugriff zu übertragen, von welcher sie einfach in Echtzeit in Pixelformat extrahiert werden können, um
sie in der darauffolgenden Abtastzeile des Druckers unterzubringen. Wegen der Geschwindigkeit des Druckers unterliegt
jede Vorrichtung, die in Echtzeit arbeitet, Zwangsbedingungen.
Die Komplexität der damit verbundenen Betriebsweise und die EchtZeitbedingungen sind ein Problem bei der Entwicklung
eines ökonomischen Interface-Controllers.
_ 2 —
'''. * "44^40
Der Controller muß die Hauptbedingungen erfüllen, daß (1) der Drucker bei jeder Anfrage mit Druckdaten
versorgt wird, (2) die Zeichenbildung den begrenzten Controller-Speicher mit Daten versorgt hält, (3) der
Zeichenbildungsprozeß nicht die Möglichkeit hat, Controller-Speicherfelder
zu überschreiben, von welchen Daten für das Drucken abgezogen werden, und (4) die Prozesse alle in
Echtzeit arbeiten.
Der Erfindung liegt deshalb die Aufgabe zugrunde, einen Controller für einen Hochgeschwindigkeitsdrucker
zu schaffen, welcher die vorangegangenen Bedingungen erfüllt, während die Hardwarekosten reduziert werden.
Diese und andere Aufgaben, die im folgenden ve·. Λ-bracht
werden, werden erfindungsgemäß dadurch gelöst, daß eine Vorrichtung geschaffen wird, die einen Streifenfeldspeicher
(strip map memory), einen festverdrahteten Adresschaltkreis zum Zugreifen des Speichers und einen
programmierten Prozessor-Controller (CPU) enthält. Das Streifenfeld speichert eine ausgewählte Anzahl v-'Vi zu
druckenden Zeilen, anstatt einer gesamten Seite. Während Zeilen extrahiert werden, um gedruckt zu werden, werden
neue Zeilen in den Streifenfeldspeicher eingelesen durch kooperativen Betrieb des programmierten Prozessor-Controllers
und der Steuerlogik, die zum festverdrahteten Adressenschaltkreis gehört.
— 3 —
Der Controller speichert jeweils ein Zeichen (wie z.B. den Buchstaben "A") vom Quellspeicher in
das Streifenfeld. Um den Speicher zu sichern und die Betriebszeit zu reduzieren, ist die Vorrichtung so
ausgebildet, daß die CPU nur eine Minimalmenge von Information für die Bildung des Zeichens für die Steuerlogik
und den Adressenschaltkreis spezifizieren muß - nämlich, wo das Zeichen gebildet, d.h. im Streifenfeld
gespeichert werden soll, welches das Zeichen ist, und wo es im Quellspeicher gefunden werden kann. Die
Steuerlogik und Adressenschaltung erzeugen daraufhin autonom das Zeichen im Streifenfeld.
In der bevorzugten Ausführungsform werden Zeichenplatz und -identität durch eine Anzahl von Bits in einem
Zeichenregister und in einem als Quell-ETC-Register bezeichneten Register spezifiziert. Die Generationsstelle
im Streifenfeld wird spezifiziert durch Offset- und Hoch-X-Bits und durch X-Ursprungsbits und Y-Ursprungsbits.
Die Steuerlogik ist so konstruiert, daß ein Laden des Quell-ETC-Registers durch den Prozessor den Start der
Zeichenerzeugung und die weitere Durchführung bis zur Vollendung ohne weiteren Eingriff des Prozessors verursacht.
Bei der Fertigstellung eines Zeichens wird der Prozessor unterbrochen, um zu bestimmen, welche weiteren
Operationen gestartet werden sollen, wie z.B. eine
weitere Zeichenerzeugung oder eine Erhöhung der Abtastzeilenadresse,
die verwendet wird, um Daten aus dem Streifenfeld zum Printer auszulesen.
Um dies zu erreichen gibt die Steuervorrichtung einem Druckvorgang Priorität vor der Erzeugung und hält
ein Fenster zwischen den Erzeugungs- und Druckzeilen aufrecht, um die Möglichkeit zu beseitigen, daß der eine
Prozeß den anderen überholt.
Im folgenden wird die Erfindung anhand eines Ausführungsbeispieles
unter Bezugnahme auf die Figuren genauer erläutert. Es zeigen :
Fig. 1 ein schematisches Blockdiagramm einer bevorzugten Ausführungsform der Erfindung;
Fig. 2 einen Schaltkreis zum Adressieren der Quelle in der bevorzugten Ausführungsform;
Fig. 3 ein logisches Diagramm der Quelladressteuerschaltung der bevorzugten Ausführungsform;
Fig. 4 einen schematischen Schaltkreis einer Schaltung zum Liefern von Daten-aus(Schreib)-Adressen an
das Speicherfeld der bevorzugten Ausführungsform;
3A416AO
Fig. 5A schematische Schaltkreisdiagramme einer Schaltung
und 5B
zum Erzeugen von Daten-aus(Lese)-Adressen für das
Speicherfeld der bevorzugten Ausführungsform;
Fig. 6 ein Flußdiagramm zur Erläuterung des Betriebes der zentralen Rechnereinheit (CPU) der bevorzugten Aus
führungsform;
Fig. 7 ein Flußdiagramm zur Erläuterung des Betriebes der zentralen Rechnereinheit (CPU) der bevorzugten Ausführung
sform;
Fig. 8 ein Flußdiagramm zur Erläuterung des Betriebes der zentralen Rechnereinheit (CPU) der bevorzugten Ausführungsform;
Fig. 9 ein Flußdiagramm zur Erläuterung des Betriebes der zentralen Rechnereinheit (CPU) der bevorzugten Ausführungsform;
Fig. 10 ein Flußdiagramm zur Erläuterung des Betriebes der zentralen Rechnereinheit (CPU) der bevorzugten Ausführungsform;
Fig. 11 ein Flußdiagramm zur Erläuterung des Betriebes der
zentralen Rechnereinheit (CPU) der bevorzugten Ausführungsform;
Fig. 12 ein logisches Diagramm einer Schaltung zur Erzeugung von CPU-Interrupts.
Die bevorzugte Ausführungsform der Erfindung ist in Fig. 1 gezeigt. Die Vorrichtung von Fig. 1 enthält
eine Vorrichtung, welche den Quell-ROM 11 unä einen
Drucker 13 miteinander verbindet. Der Quell-ROM 11 kann vom Typ sein, wie er in einem typischen Wortprozessor verwendet
wird, während der Drucker 13 z.B. ein Laserdrucker sein kann. In der bevorzugten Ausführungsform enthält der
Quell-ROM 11 eine Anzahl von individuell adressierbaren ROM-Einheiten. Zeicheninformation aus dem Quell-ROM 11
wird zu einem Speicherfeld 17 übertragen und dort gespeichert für die Übertragung zum Drucker 13.
Das Speicherfeld 17 ist als "Streifenfeld" organisiert. D.h., das Speicherfeld 17 speichert nicht das Bild eines gesamten
Dokuments. Statt dessen steht nur genug Bildspeicher zur Verfügung, um einen "Streifen" des Dokumententextes zu
erzeugen. In der bevorzugten Ausführungsform ist die Maximalgröße des Streifens 256 Abtastzeilen - ungefähr 2,5cm
Text. Individuelle Pixel in jeder Abtastzeile werden entweder gedruckt oder nicht gedruckt durch den Drucker 13,
um Zeichenbilder wie z.B. alphanumerische Zeichen zu bilden.
— 7 —
Die Übertragung von Zeichendaten vom Quell-ROM 11 zum Streifenfeldspeicherfeld 17 und damit zum Drucker 13
wird durch eine zentrale Recheneinheit CPU 15 und die Streifenfeldsteuerschaltung 18 gesteuert.
Die Streifenfeldsteuerschaltung 18 enthält eine Quelladresserzeugungs-
und -steuerschaltung 19, eine Speicherdaten-ein-Adressenerzeugungsschaltung
21 und eine Speicherdaten-aus-Adresserzeugungsschaltung 23. Die Quelladresserzeugungs-
und -steuerschaltung 19 erzeugt Adressen, die an den Quell-ROM 11 geliefert werden. Diese Adressen verursachen
eine Datenausgabe aus dem Quell-ROM 11 über ein Register 29 und einen Schieber 27 zum Speicherfeld 17. Die
Speicherdaten-ein-AdressenerZeugungsschaltung 21 liefert
Adressen an das Speicherfeld 17, um anzuzeigen, wo die Pixeldaten, die vom Quell-ROM 11 geliefert werden, im
Speicherfeld 17 gespeichert werden sollen. Die Speicherdaten-aus-Adressenerzeugungsschaltung
23 liefert Adressen an das Speicherfeld 17, welche eine Datenausgabe an den Drucker 13 verursachen.
Geeignete Synchronisationssignale werden an die bis jetzt beschriebene Vorrichtung durch einen Synchronisationsgenerator 25 geliefert. Der Synchronisationsgenerator 25
erzeugt sequentielle Synchronisationssignale T0* bis T9*.
Diese Signale werden durch Treiben eines Zehn-Bit-Schieberegisters
mit einem 20-MHz-Kristalloszillator
erzeugt. TO bis T9 bilden Unterzustände in einem Haupt-. betriebszyklus. Es werden auch Synchronisationssignale erzeugt, die für Intervalle vorliegen, wie z.B. T23*,
T37*, T01* und T17*.
erzeugt. TO bis T9 bilden Unterzustände in einem Haupt-. betriebszyklus. Es werden auch Synchronisationssignale erzeugt, die für Intervalle vorliegen, wie z.B. T23*,
T37*, T01* und T17*.
Die in der bevorzugten Ausführungsform verwendete CPU 15 ist ein Intel 8085. Die CPU 15 kommuniziert mit
der Streifenfeldsteuerschaltung 18 über acht benachbarte I/O-Kanaladressen. Jeder Kanal kann ein Lese- und/oder
Schreibkanal sein. Acht bidirektionale Datenleitungen, drei Adressleitungen und fünf Steuerleitungen bilden die
gesamte logische Verbindung zwischen der CPU und der
Steuerschaltung 18.
Steuerschaltung 18.
Der bidirektionale Datenbus der CPU 15 arbeitet als I/O-Kanal über einen Multiplexer - der acht Daten-aus-Leitungen
DO* bis DO7 und acht Daten-ein-Leitungen DI0 bis DI7 zur Verfügung stellt.
Die drei letzten signifikanten Adressenleitungen
der CPU 15 werden decodiert, um einen der acht I/0-Kanäle zu adressieren.
der CPU 15 werden decodiert, um einen der acht I/0-Kanäle zu adressieren.
Die fünf Steuerleitungen sind :
TAZIO* Ein decodierter I/O-Request von der CPU 15;
TRD* CPU-Lesesignal;
TWR* CPU-Schreibsignal;
RST* Master-Rücksetzleitung zur Streifenfeldsteuerschaltung 18;
BUSY dieses Signal wird durch die Streifenfeldsteuerschaltung 18 hochgesetzt, um anzuzeigen, daß eine
Zeichengeneration vollständig ist, oder daß eine neue Abtastzeile durch die Maschine gelesen wird.
Die CPU überprüft dann die SMC-Statusbits um den Interrupttyp festzustellen.
Die CPU 15 liefert auch Ausgangssteuersignale A0 bis A2,
welche zusammen mit TAZIO, TRD und TWR* Lesesteuersignale
0R* bis 7R* und Schreibsteuersignale 0W* bis 7W* aktivieren.
Die I/O-Lesekanäle und ihre Signifikanz sind :
Aktion
Relative
I/O-Adresse
I/O-Adresse
Lesequelldaten. Ein Datenweg wird geschaffen, welcher der CPU 15 erlaubt. Daten aus dem
Quell-ROM 11 zu lesen.
Maschinendaten. Lesen dieses Kanals liefert die gleichen Daten und starten den gleichen
Betrieb, wie er auftritt, wenn ein Datenbyte
- 10 -
Relative
zum Drucker 13 ausgelesen wird. Dieser Kanal wird für Diagnosezwecke verwendet.
Maschine-Tief-Y-Adresse. Liefert die unteren
acht Bits der aktuellen Abtastzeile, welche im Moment zum Drucker 13 ausgelesen wird.
Maschine-Hoch-Y-Adresse. Liefert die oberen acht Bits der aktuellen Abtastzeile, die im
Moment zum Drucker 13 ausgelesen wird.
Es werden keine Daten mit Inhalt übertragen. Das "Generation Fertig"-Flag wird gelöscht.
Der einzige andere Weg, dieses Flag zu löschen ist, in das Quell-ETC-Register (Fig. 2) zu
schreiben. Dies kann bedauerlicherweise aber auch einen weiteren Generationszyklus initiieren.
Lesen dieses Kanals liefert ein Mittel
zum Löschen dieses Flag ohne einen weiteren Generationszyklus zu starten.
SMC-Status. Die vier letzten signifikanten Bits
haben die Bedeutung:
Bit 0 Generationszyklus ist fertig;
Bit 1 Maschinenabtastzeilenerhöhung; Bit 2 Quelle fertig;
- 11 -
Relative
I/O-Adresse
I/O-Adresse
Bit 3 Erzeugen eines Zeichens im Streifenfeld 17.
Die verbleibenden Bits sind immer 0.
Die verbleibenden Bits sind immer 0.
Die I/O-Schreibkanäle und ihre Signifikanz
sind :
Relative
Quell-ETC-Register. Dieses Register enthält
drei Punkte. Bits 0-3 sind die Quellwahl. Bits 4-6 sind das untere X-Offset zum Spezifizieren
der Bitposition eines zu erzeugenden Zeichens. Bit 7 ist die "Seite", welche spezi
fiziert in welcher Speicherseite das Zeichen erzeugt wird.
Zeichenregister. Bestimmt, welches Zeichen erzeugt werden wird. Dieses Datum wird verwendet,
um eine Adresse für den Quell-ROM zu erzeugen.
X-Abtastursprung. Die X-Adresse an welcher das Zeichen erzeugt wird.
Y-Abtastursprung. Die Abtastzeile des Streifenfeldes
17, in welcher das Zeichen gebildet wird.
- 12 -
*s. ι
Relative
Quell-Offset. Die unteren drei Bits FO bis F2
werden verwendet beim Erzeugen einer Adresse für den Quell-ROM 11.
Quellwahl. Daten zum "Quellwahl" RAM 101. Dieser 16x8 RAM erlaubt der Software, anfangs bis zu
16 Quellen zu spezifizieren und anzuzeigen, wie diese Quellen zugegriffen werden sollen. Danach,
wenn die Adressierung unter der Steuerung der Logik von Fig. 2 stattfindet, werden die unteren
vier Bits des Quell-ETC-Registers 113 die ge
eignete Adressierung bilden. (Diese 4 Bits sind die Adressenzeilen für den 16x8 Quellwahl RAM).
Daten zum 16x8 RAM 103, welcher ähnlich arbeitet, wie der Quellwahl RAM 101. Fünf der acht Bits
sind benutzt. Die unteren vier Bits liefern die
am meisten signifikanten Adressenzeilen für das Quelladressieren. Das MS Bit zeigt Porträt- oder
Landschaftsmodus an.
Steuerkanal 20
Bit 0 Interrupt bei Generation fertig;
Bit 1 Interrupt bei AbtastZeilenerhöhung;
Bit 2 erlaubt dem Maschinendrucker den Streifenfeldspeicher zu lesen;
- 13 -
3ΑΑ1640
Relative
Bit 3 Generationsaktivierung. Dieses Bit
muß gesetzt werden für ein Schreiben zum Quell-ETC, um eine Generationssequenz zu initiieren;
Bit 4 Maschine aktivieren. Dieses Bit startet
den Maschinenieseprozeß durch Lesen des ersten Bits des Streifenfeldspeichers;
Bit 5 Lese-Streifenfeldspeicher; Bit 6 Lösche-Streifenfeldspeicher;
Bit 7 Laser/Stift*.
Die Prioritätslogik 26 liefert Steuersignale zum Speicherfeld 17 und anderen Elementen/ die bezeichnet
werden als MAJB (Erzeugen), MAJE (Maschine) und MAJR (Refresh). Diese Signale werden jeweils assoziiert mit
der Zeichenerzeugung im Speicherfeld 17, dem Zeichendrucken (Maschinenzyklus) vom Feld 17 und Refresh des
Speicherfeldes 17. Ein Erzeugungsbetrieb hat die niedrigste
Priorität und folglich wird MAJB unterdrückt, wenn eine Maschinenanfrage oder ein Refresh-Betrieb anhängig
sind.
Die Prioritätslogik 26 empfängt eine Anzahl von Eingangssignalen, welche sie befähigen, diesen Betriebsweisen
die Priorität zuzuordnen. Diese Eingangssignale werden
weiter unten genauer beschrieben.
- 14 -
Die Anwesenheit eines MAJE Signals (major E) verursacht die Erzeugung zusätzlicher Maschinenzyklussteuersignale
E0*, EL3*, E4* und E8*, während die Anwesenheit von MAJB Steuersignale B01*, B23*, B5* und B8* erzeugt.
Die Funktion und Reihenfolge dieser Signale wird aus der folgenden Beschreibung klar.
In der bevorzugten Ausführungsform liest die CPU 15 anfangs Daten vom Quell-ROM 11, welche bestimmte Zeichenparameter
definieren. Die CPU 15 speichert diese Information in ihrem eigenen Systemspeicher und benutzt sie, um zu bestimmen,
wo die Zeichen im Speicherfeld 17 untergebracht werden. Die CPU 15 verursacht dann, daß das Speicherfeld
mit Quelldaten geladen wird. In diesem Betrieb versorgt die CPU die Streifenfeldsteuerschaltung mit Anfangsadresseninformation.
Die Controller-Schaltung 18 führt dann autonom die Übertragung der Zeichen vom Quell-ROM 11 in den Streifenfeldspeicher
17 durch. Die CPU wird nach der Vervollständigung dieser Zeichenbildung unterbrochen.
Nachdem beim Start das Speicherfeld 17 voll geladen wurde, fordert der Drucker 13 Daten vom Speicherfeld 17 an,
und zwar jeweils ein Byte. Als Antwort steuern die CPU und die Synchronisationserzeugungsschaltung 25 die Speicherdaten-aus-Adressenschaltung
23, damit sie Daten vom Speicherfeld 17 abzieht und zum Drucker 13 liefert. Zur gleichen Zeit
- 15
überprüft die CPU 15 die Abtastzeilennummer, die im
Moment zum Drucker 13 ausgelesen wird. Wenn genügend Speicher zur Verfügung steht für zusätzliche Zeichen,
arbeiten die Quelladressenerzeugungsschaltung 19, die Daten-ein-Adressenschaltung 21 und die CPU 15 zusammen,
um neue Abtastzeilen in das Speicherfeld 17 zu laden, um die zu ersetzen, welche entfernt würden und zum Drucker
für das Drucken übertragen wurden.
Fig. 2 und 3 zeigen eine Ausführungsform der QuelladressenerZeugungsschaltung
19. Fig. 2 zeigt allgemein Adressenregister, während Fig. 3 die Steuerlogik zeigt,
die beim Adressieren verwendet wird.
In Fig. 2 liefert ein Quelladressenregister 115
sechzehn Bits Adressendaten zum Quell-ROM 11. Neben dem Quelladressregister 115 sind RAM-Speichereinheiten 101, 103,
ein Zeichenregister 105, ein Offsetregister 107, ein Quelladresszähler
111 und ein Quell-ETC-Register 113 angeordnet.
Der Quellwahl-RAM 101 empfängt Quellwahleingangssignale vom Datenbus der CPU 115 und ein Schreibsteuersignal 5W*.
Er liefert ein Quellwahlsignal, welches eine spezielle ROM-Einheit des Quell-ROM 11 auswählt. Der zweite Quell-·
wahl-RAM 103 empfängt ebenso ein Eingangssignal vom Datenbus
der CPU 15 und ein Schreibsteuersignal 6W* und liefert Ausgangssignale K0 zum Quelladressregister 115 und ein
Steuersignal FOR. Das Zeichenregister 105 empfängt acht
- 16 -
Zeichenbits vom CPU-Datenbus und liefert acht Eingangsbits an das Quelladressregister 115. Das Zeichenregister
empfängt auch ein CPÜ-Schreibsteuersignal 1W*.
Das Offsetregister 107 empfängt ein Eingangssignal vom CPU-Datenbus und liefert Offsetbits FO bis F2 zum
ROM-Adressenregister 115. Das Offsetregister 107 empfängt
ein InkrementSteuersignal INCR von der Logik 109 und ein
Schreibsteuersignal von der CPU, welches mit 4W* bezeichnet ist. Das Register 107 wird benutzt, um das Lesen der Quell-ROM-Daten
durch die CPU 15 zu erlauben und um die unteren drei Bits der Quell-ROM-Adresse während der Parameterextraktion
zuzuführen.
Der Quelladresszähler 111 liefert sechzehn Adressenbits
an das Quelladressregister 115. Dieser Adressenzähler 111
besteht aus einem oberen Quelladressenzähler (obere 8 Bits) und einem unteren Quelladressenzähler (unteren 8 Bits). Diese
jeweiligen Zähler empfangen Eingangssignale von Quelldaten, sowie die Steuersignale LDLFADDR, LDHFADDR und 10 von der
Logik von Fig. 3.
Das Quell-ETC-Register 113 empfängt ein 8-Biteingangssignal
vom CPU-Datenbus und liefert vier Quelladressenbits
- 17 -
FNTO bis FNT3 an den Ram 103, ein Seitenbit, und drei Bits, die den unteren X-Offset anzeigen. Das Quell-ETC-Register
empfängt ebenso ein Schreibsteuersignal 0W* von der CPU 15.
Die Steuerlogik von Fig. 3 enthält einen Höhenzähler
51 und einen Breitenzähler 53, die jeweils geladen werden können mit Anzeigen für die Zeichenhöhe und die
Zeichenbreite und zwar über den Quelldatenausgang auf den Leitungen FD7 bis FD0. Der Höhenzähler 51 wird geladen
durch ein Steuersignal LD HEIGHT* und empfängt ein weiteres T6*-Synchronisationsteuersignal auf Pin 2, ein WDLD*-
Steuersignal am T-Pin und das Steuersignal LDFONT* am P-Eingang. Der Breitenzähler 53 wird geladen durch das
T7*-Synchronisationssignal und ist mit seinem T-Eingang verbunden mit dem LDFNT-Steuersignal und an Pin 2 mit dem
T6*-Synchronisationssignal.
Der Breitenzähler 53 zählt bis "1" herab und die Logik an seinem Ausgang enthält einen "1"-Detektor. Die Logik,
die mit dem Übertragsausgang des Höhenzählers verbunden ist, enthält Gates 59, 61; Flip-Flops 63, 65 und eine LS138-Vorrichtung
67. Die LS138-Vorrichtung empfängt Eingangssignale
BLDGO von der Prioritätsauflösungslogik 26, ein Synchronisationssignal
T37* und die drei Ausgangsbits FO bis F3 des
- 18 -
Quell-Offsetregister 107. Die LS138-Vorrichtung erzeugt
Steuersignale, die mit LDF*, LD HIF ADDR*, LD LOF ADDR*, LD WIDTH* und LD HEIGHT* bezeichnet sind.
Weitere Hauptsteuersignale werden zugeführt, wie folgt. Das Flip-Flop 63 erzeugt ein Generationsrequestsignal
BLDREQ, und der Flip-Flop 65 erzeugt Steuersignale BLDNG und BLDNG*. Das LadequellSteuersignal LDFONT*, welches
an den Höhen- und Breitenzähler 51, 53 angelegt wird, wird durch ein Gate 69 erzeugt, welches als Eingang die MAJB*-
und LDF*-Steuersignale empfängt.
Die mit dem Breitenzähler 53 verbundene Logik enthält Gates 77, 79, 81, 83, 85, 87, 89, 91, 93, 95. Das logische
Gate 79 empfängt einen Eingang von zwei Gates 97, 99, die wiederum die unteren X-Inputbits vom Quell-ETC-Register
empfangen. Der Ausgang von Gate 83 ist ferner mit einer Logik verbunden, die die Gates 71, 75 und ein Flip-Flop
enthält.
Die oben beschriebene Logik liefert verschiedene Steuersignale. Das Gate 71 liefert das LAST*-Steuersignal, das
Gate 75 liefert das FIRST*-Steuersignal, Gate 89 liefert das 10-Steuersignal, das an den Quelladresszähler 111 geliefert
wird, Gate 95 liefert das WDLD*-Steuersignal und Gate 93 liefert das Steuersignal INC RYB.
- 19 -
« W Ww
34416AO
Zur gleichen Zeit wie die Quelldaten adressiert und ausgelesen werden aus dem Quell-ROM 11 in Abhängigkeit
von den durch die in Fig. 2 und 3 gezeigte Schaltung gelieferten Adressen, müssen auch Adressen erzeugt
werden, um die Daten korrekt im Speicherfeld 17 anzuordnen. Die Erzeugung dieser Adressen und ihre Übertragung zum
Speicher 17 wird durchgeführt durch die Adressen-ein-Erzeugungsschaltung
von Fig. 4.
Die Schaltung von Fig. 4 liefert X- und Y-Adressen an das Speicherfeld 17. Die Y-Adresse wird durch die
CPU im Y-ürsprungsregister 112 gespeichert. Sie wird dann an den Zähler 119 geliefert, welcher ein Ausgangssignal
an einen Treiber 121 liefert, der die Speicheradressenschaltung des Speicherfeldes 17 versorgt. In gleicher Weise
ist ein X-Ursprungsregister 123 vorgesehen zum Empfangen einer X-Adresse vom CPU-Datenbus, welches die X-Adresse
an einen Zähler 125 liefert und dann zu einem Treiber zum Versorgen des Speicherfeldes 17.
Die Adressen-ein-Erzeugungsschaltung von Fig. 4 enthält
auch eine Steuerlogik zum Erzeugen von Steuersignalen PGSEL1 und PGSEL1* zum Zuführen zum Speicherfeld 17. Die
PGSEL-Signale sind Seitenwahlsteuersignale, die eine spezielle Hälfte des Speicherfeldes 17 auswählen. Diese Signale
werden durch ein Flip-Flop 138 zugeführt, welches Eingangssignale von einem Gate 137 und einem Gate 135 erhält. Das
- 20 -
Gate 135 empfängt Eingangssignale von Gates 131 und 133. Das Gate 133 empfängt ein Eingangssignal vom Gate 129. Das
WDLD*-Steuersignal bildet den Eingang für die Gates 131,
und 137.
Im folgenden wird der Betrieb des Schaltkreises von Fig. 2, 3 und 4 beim Erzeugen von Zeichen im Speicherfeld
beschrieben. Wenn ein Zeichen gebildet werden soll, müssen Informationen bezüglich der Zeichenparameter an den Schaltkreis
der Fig. 2 bis 4 sowohl von der CPU 15 als auch vom Quell-ROM 11 zur Verfügung gestellt werden. Der Anfang jeder
Quelle im Quell-ROM 11 enthält eine Tabelle, die Parameter
liefert, die das Zeichen im ROM betreffen. Jeder Eintrag in der Tabelle besteht aus 8 Bytes. Die Ordnung dieser 8 Byte-Einträge
in der Tabelle entspricht der Zeichennummer. Die Zeichennummer ist äquivalent zum ASCII-Wert des speziellen
Zeichens (z.B. Zeichennummer 41 Hex entspricht dem Buchstaben "A"). Die 8 Bytes in jedem Tabelleneintrag für jedes
Zeichen sind :
0 Zeichenhöhe
1 Zeichenbreite
2 Zeichendatenadresse, unteres Byte
3 Zeichendatenadresse, oberes Byte
4-7 zusätzliche Plazierungsinformation, die von der CPU 15 verwendet wird, um die exakte Plazierung
des Zeichens im Dokument zu bestimmen.
- 21 -
Jedesmal, wenn das System gestartet wird/konfiguriert
die CPU 15 die Quellwahl-RAMs 101 und 103 und liest die 8 Parameter für alle Zeichen im Quell-ROM 11 aus, wobei
sie sie im eigenen Speicher abspeichert. Diese Parameter werden durch die CPU 15 verwendet, um die Zeichen
auf der Seite sauber zu positionieren, d.h. korrekt die X- und Y-Ursprungsadressen zu berechnen.
Um die anfängliche Startfunktion durchzuführen, wird
das Quell-Offsetregister 109 auf "0" gesetzt, wenn es nicht
bereits auf diesem Wert steht. Die 8 Parameter-Bytes werden dann der CPU 15 zur Verfügung gestellt durch wiederholtes
Auslesen des Quelldatenregisters 31. Die CPU 15 liest das Register 31 durch Zuführen des 0R*-Steuersignals.
Dieses Signal 0R* ist auch mit der Logik 109 verbunden und erhöht das Offsetregister 107.
Nach Einlesen der 8 Parameter-Bytes für jedes Zeichen hat die CPU 15 die Information, die nötig ist zum
Plazieren der Zeichen. An dieser Stelle soll festgestellt werden, daß keines der Zeichenparameter-Bytes in die
Register von Fig. 2, 3 oder 4 eingeschrieben wurde. Sie wurden nur durch die CPU 15 herangezogen für das Berechnen
der X- und Y-Positionen im Speicherfeld 17. Die X-Position im Speicherfeld 17 ist ein 12-Bitwert, der die Bitnummer
auf der Abtastlinie beschreibt. Der Y-Wert ist ein
- 22 -
8-Bitwert, welcher die Abtastzeilennununer ist (Modulo
256). Nach dem Starten, wenn das Erzeugen des Zeichens im Streifenfeld 17 anfängt, wird der Y-Wert in das
Y-Ursprungsregister 112 des Adressen-ein-Erzeugungsschaltkreises
21 (Fig. 4) geschrieben. Teile des X-Wertes werden durch die CPU 15 auf drei Plätze geschrieben. Die unteren
3 Bits bestimmen das Bitoffset und bilden den unteren
X-Offset. Diese werden in Bit 4, 5 und 6 des Quell-ETC-Registers
113 geschrieben. Die nächsten 8 Bits sind der Byte-Wert auf der Abtastlinie und werden in das X-Ursprungs·
register 123 geschrieben (Fig. 4). Das signifikanteste Bit
ist das Seitenbit, welches die spezielle Speicherbank (eine von zwei) auswählt und in Bit 7 des Quell-ETC-Registers
113 geschrieben wird.
In der Praxis ist das Quell-ETC-Register 113 das
letzte Register, welches durch die CPU 15 während einer typischen Zeichenbildung geschrieben wird. Wenn das Erzeugungsakt
ivierungssteuerbit BLDEN vorher gesetzt war in Teil 20 durch die CPU 15,initiiert das Schreiben in
das Quell-ETC-Register 113 durch Erzeugen des 0W*-Signals automatisch eine Zeichenerzeugungssequenz, d.h. die übertragung
eines Zeichens in das Speicherfeld 17 (Erzeugung = BLDEN AND 0W*).
- 23 -
Die Schritte in der typischen Erzeugungssequenz sind wie folgt. Das Erzeugungssignal an den Flip-Flop
setzt die BLDREQ-Zeile und löscht das Quell-Offsetregister
107. Beim nächsten T3 wird ein Request für das Steuersignal BLDGO für die Logik 26 erzeugt. Beim nächsten T9
wird das BLDGO-Signal durch die Logik 26 gesichert. So ist eine Zweistufenverzögerung vorgesehen vor der Bestätigung
des BLDGO durch die Logik 26 zur Anpassung an die kombinierten Verzögerungen durch die Quellwähl-RAMs
101, 103; durch die Adressendekoder im Quell-ROM-Feld,
und durch die Zugriffszeit der Quell-ROMs 11.
Die Bestätigung des BLDGO durch die Logik 26 aktiviert die LS138-Vorrichtung 67. Diese Aktivierung erlaubt,
daß andere Aktivierungssignale Ausgangssignale aus dem LS138 erzeugen, um die ersten vier Zeichenparameter aus
dem Quell-ROM 11 zum Speichersteuerschaltkreis 18 auszulesen.
Der erste ausgelesene Parameter ist die Zeichenhöhe, die in den Höhenzähler 51 bei T6 geladen wird. Beim
unmittelbar darauffolgenden T7 wird das Quell-Offsetregister 107 durch die Logik 109 inkrementiert. Diese Erhöhung
bewirkt eine Änderung der Quell-Offset-Eingangsbits an den LS138 , wodurch die LDWIDTH*-Steuerleitung bestätigt
wird. Nach dieser Bestätigung beim nächsten T5 wird das Breitenregister 55 geladen. Der Breitenzähler 53 wird
ebenso mit den gleichen Daten geladen bei T7 dieses
- 24 -
Zyklus. Bei diesem Betrieb empfängt das logische Gate den LDWIDTH*-Eingang und verursacht, daß das Logikgate
das Steuersignal WDLD* ausgibt. WDLD* ist die Ladeaktivierung für den Breitenzähler 53 und verursacht
zusammen mit dem Synchronisierungssignal T7* das Laden
dieses Zählers bei T7.
Bei jedem der nächsten zwei Zyklen erfahren die Offsetregisterausgänge FO bis FO2 eine Inkrementierung,
wodurch der LS138 das Lade-Oberes-F-Adressensignal und
das Lade-Unteres-F-Adressensignal ausgibt, die jeweils
die untere Quelladresse und die obere Quelladresse in den Adressenzähler 111 laden.
Beim nächstfolgenden Zyklus wird das Steuersignal LDF* durch die LS138-Vorrichtung bestätigt. Diese Bestätigung
ist wiederum ein Ergebnis der Erhöhung des Offsetregisters 107. LDF* wird weiter bestätigt,während
T3 bis T7 eines jeden Zyklus danach, da (1) die Bestätigung des Steuersignals BLDNG durch den Flip-Flop 65 als
Antwort auf LDF* den Inkrementierungstakt zum Quell-Offsetregister
107 über die Logik 109 sperrt, und (2) das Aktivierungssignal T37* zur LS138-Vorrichtung 67
zugeführt wird.
- 25 -
Die Steuersignale LDF* und MAJB* erzeugen auch über das AND-Gate 69 das Steuersignal LD FONT*. Dieses
Signal steuert verschiedene Zähl- und Synchronisationsfunktionen während des Erzeugungsprozesses,wie dies beschrieben
wird.
Der Anfang eines MAJB-Zyklus initiiert ein Lesen von Daten in das Speicherfeld 17. Zeilen- und Spaltenadressen
für das Feld 17 werden durch den X- und Y-Adressenzähler
119, 125 (Fig. 4) zugeführt. Wie gezeigt, werden die Treiber 121, 127, die die Adressen zum Feld
zuführen, durch die Steuersignale B23* und B01* aktiviert, die durch die CPU 15 erzeugt werden, wenn das MAJB-Signal
vorliegt.
Gleichzeitig mit der Erzeugung der Zeilen- und Spaltenadressen für das Feld 17 bewegen sich die über den Adressenzähler
111 adressierten Quell-ROM-Daten durch das Schieberegister
27 (unverändert, da unteres X = 0). Der aktuelle Inhalt des Speicherfeldes 17 und die Quelldaten, die vom
Quellspeicher 11 gelesen werden, werden durch ein OR-Glied
miteinander verbunden, um den neuen Inhalt der Speicherposition zu bilden, die im Feld 11 adressiert ist. Das
Ergebnis der OR-Operation ist in den Speicher geschrieben im Speicherfeld 17, welches durch die X- und Y-Adressen
bei T7 des Speicherlesezyklus adressiert ist.
- 26 -
Wenn der Zeichenbreitenzähler 53 einen Zählwert größer als 1 enthält, wird er herabgezählt bei T7 des
gleichen Zykluses, in welchem Daten in das Speicherfeld 17 eingeschrieben werden. Der Zeilenadressenzähler
125 wird inkrementiert zum gleichen Zeitpunkt, um die Zeilenadresse für die Adressierung des Speicherfeldes
17 beim nächsten Zyklus zu setzen. Wenn in diesem nächsten Zyklus der Breitenzähler 53 einen Wert 1 enthält,
ist der Erzeugungsprozeß für die Abtastzeile fertig und die nächste Abtastzeile muß anfangen.
Um die oben beschriebene Betriebsweise durchzuführen, ist ein "One-Detektor"-Schaltkreis am Ausgang des Breitenzählers
53 angeordnet. Das Ausgangssignal des Gate 87 bildet
das "One Detect"-Signal. Dieses Signal erzeugt ein ' ί
Steuersignal INC RYB, sowie das Steuersignal WDLD*. Das;
INC RYB-S teuer signal erhöht die Y-Abtastadresse über eiiien
Eingang zum Abtastzeilenzähler 119. Das INC RYB-Signal erhöht
so die Y-Abtastadresse, um zur nächsten Abtastzeile überzugehen. Das WDLD*-Signal lädt den X-Adressenzähler
(Zeilenadressenzähler) neu, sowie den Breitenzähler 53.
Das WDLD*-Signal erniedrigt auch den Höhenzähler 51.
Wenn der Höhenzähler 51 auf "0" erniedrigt ist, wird ein Übertragssignal erzeugt, das zum Gate 59 geliefert wird.
Dieses Signal verursacht, daß das Steuersignal BLDREQ, das
- 27 -
durch den Flip-Flop 63 ausgegeben wird, am Ende des laufenden Zyklus weggenommen wird. Die Wegnahme des
BLDREQ-Signals beendet den Erzeugungsprozeß durch Löschen des BLDNG-Flip-Flops 65.
Die Wegnahme von BLDNG erzeugt einen Interrupt zur CPU 15, so daß ein nächster Erzeugungszyklus initiiert
werden kann. Dieser Interrupt wird durch die BUSY-Leitung 421 (Fig. 12) erzeugt durch die Zuführung des
Signals BLDNG* zum Flip-Flop 423, dessen Ausgangssignal an ein Gate 425 geliefert wird, welches durch das INTA-Signal
aktiviert wird, das durch die Vorrichtung 20 von Fig. 1 ausgegeben wird.
Die obige Beschreibung nimmt an, daß das Zeichen, das aus dem Quell-ROM 11 zum Speicherfeld 17 abgelesen
wird, an der Byte-Grenze liegt, d.h. der untere X-Wert ist "0". Der Erzeugungsprozeß wird etwas geändert, wenn
das Zeichen nicht an der Byte-Grenze liegt. Die Unterschiede umfassen das Schieben der Quelldaten durch den
Schieber 27. Dies bringt einen zusätzlichen Erzeugungszyklus für jede Abtastzeile mit sich, wie im folgenden beschrieben
werden wird.
- 28 -
Der Schieber 27 und die zugehörige Schaltung erlauben es, daß ein Zeichen an irgendeiner Bitposition
im Speicherfeld 17 plaziert werden kann. Wenn der untere X-Wert nicht "0" ist (1-7), ist ein Schieben notwendig.
Dies ist kompliziert durch die Tatsache, daß mehr als ein einziges Byte von Daten verschoben werden muß, um
ein Zeichen zu einer spezifizierten Bitposition zu bewegen. Die gesamte Zeichenbreite muß geschoben werden.
Als Beispiel stelle man sich einen Byte-Strang im Quell-ROM 11 vor, der eine einzige Abtastzeile eines Buchstabens
beschreibt. Dieser Strang, der z.B. 4 Byte lang sein kann, taucht im Quell-ROM 11 auf als :
B7 BO
Byte 0 Byte 1 Byte 2 Byte 3 11100110 00111111 10000011 11001110
Wenn dieser Byte-Strang um 3 Bits geschoben wird, taucht er im Streifenfeldspeicher auf als:
Byte 0 Byte 1 Byte 2 Byte 3 Letztes 00011100 11000111 11110000 01111001 1100000
Richtung des Schiebens —-^ —^
- 29 -
Zwei Bedingungen treten hier auf. Erstens werden die Bits geschoben mit Nullen in den vorderen Bits und sie
müssen Byte-Grenzen überkreuzen. Zweitens muß ein zusätzlicher Speicher/Schreibzyklus durchgeführt werden,
um die verbleibenden Bits von Byte 3 anzupassen. Die unteren 5 Bits im "letzten" Byte müssen in diesem Falle unverändert
bleiben. Es soll festgestellt werden, daß alle Erzeugungsspeicherzyklen Lesen-Ändern-Schreiben sind und daß die
neuen Quelldaten über ein OR-Glied in den vorliegenden Speicherinhalt eingebracht werden.
Der Schieber besteht aus 8 LS151, 8-1 Wählern.
Eine Vorrichtung betreut ein einziges Datenbit. Die Quelldaten für diese Wähler sind SBO bis SB15. SBO bis SB7 sind
die aktuellen Quelldaten. SB8 bis SB15 sind die Quelldaten aus dem vorangegangenen Erzeugungszyklus. Beibehalten der
vorangegangenen Quelldaten liefert ein Mittel zum Bewegen von Bits über Byte-Grenzen. Das Setzen der geeigneten Bits
auf "0" am ersten und letzten Byte wird erreicht durch Löschen der vorangegangenen Bits (SB8-SB15) beim ersten
Streifenfeldschreiben einer Abtastzeile und durch Löschen der aktuellen Quelldaten (SB0-SB7) beim letzten Speicherschreiben
einer Abtastzeile. Die Signale, die diese Löschfunktion vorsehen, sind die FIRST*- bzw. LAST*-Signale.
Zurück zum Zeichenbreitenzähler 53, wenn der untere X-Zählwert nicht "0" ist, ist der Ausgangswert von Gate 99
- 30 -
"hoch". Der "Ones"-Detektor wird deaktiviert und ein
Null-Zählwert wird vom Gate 83 gemessen. Wenn ein Null-Zählwert gemessen wird vom Breitenzähler 53, wird das
letzte Byte der Abtastzeile vor das Zeichen geschrieben. Während dieses Zyklus wird bei T5 LAST* erzeugt vor dem
aktuellen Schreiben in den Speicher 17 bei T7. Nach diesem Schreiben wird bei T8 FIRST* erzeugt. Dies wird gemacht,
da der nächste Erzeugungszyklus das erste Byte der nächsten
Abtastzeile schreiben wird. Es soll bemerkt werden, daß auch die Quelladresszähler 111 während dieses Zyklus nicht
erhöht werden. Die Quelladresse zeigt auf das erste Byte der nächsten Abtastzeile während dieses Zyklus und muß
diesen Wert beibehalten, bis die Erzeugung für die nächste Abtastzeile beginnt.
Ein Maschinenzyklus, d.h. ein Lesen vom Speicherfeld zum Drucker 13 wird durchgeführt mit Hilfe eines X-Maschinenadressenzählers
501 und eines Y-Maschinenadressenzählers 503. Die X-Maschinenadressenzähler 501 liefert eine Byte-(Zeichen)·
Adresse. Der Y-Maschinenadressenzähler 503 liefert die Adresse der speziellen adressierten Abtastzeile. Der X-Maschinenadressenzähler
501 wird aufeinanderfolgend inkrementiert, um aufeinanderfolgende Pixels in einer Zeile (Abtastzeile)
zu inkrementieren. Wenn eine gesamte Zeile adressiert wurde, wird die Y-Adresse inkrementiert, um die nächste Zeile zu
positionieren, und der X-Maschinenadressenzähler 501 wird zurückgesetzt.
- 31 -
Der Drucker 13 liefert ein Ladeanfofderungssignal LDREQ und die CPU 15 liefert ENG EN beim Steuerstatusregisterkanal
20. Die CPU 15 löscht die X- und Y-Maschinenadressenzähler durch Zulieferung eines geeignet synchronisierten
Steuersignals um ENGSTRT* und ENGST zu erzeugen. Die CPU 15 liefert auch 1R*, welches verursacht, daß
ENG REQ erzeugt wird. Erzeugung von ENG REQ erlaubt dann die Erzeugung des MAJ E-Steuersignals, wodurch Priorität
für den Maschinenrequest gegeben wird.
Die Erzeugung von ENG STRT verursacht auch die Erzeugung eines Seitenwahlsignals PGSEL0*. Zum geeigneten
Zeitpunkt wird E01*, die X-Adresse des ersten Bytes (Adresse Null) an den Adressierschaltkreis von Speicher
geliefert. Daraufhin bei E23* wird die Y-Adresse der ersten Abtastzeile an die Adressierschaltung von Speicher 17 geliefert,
wodurch die multiplexte Adresse für den speziellen dynamischen RAM, der in dieser Ausführungsform verwendet
wird, geliefert wird.
Wenn eine gesamte Abtastzeile geschrieben ist, erzeugt ein Flip-Flop 517 das Signal INC EY um die Y-Adresse zu erhöhen.
Dieses Signal aktiviert auch die BUSY-Leitung 421 (Interrupt) für die CPU 15 über die Schaltung von Fig.
- 32 -
Wie in der obigen Beschreibung angedeutet steuert die System-Software die Zeichenerzeugungs-Hardware und
die Maschinen(Drucker)-Hardware. Unterschiedliche Hauptbedingungen
steuern den Software-Entwurf. Diese sind (1), daß der Drucker bei jeder Anfrage mit Druckdaten versorgt
werden muß, (2) der Erzeugungsprozeß muß den Speicher mit Daten versorgt lassen, (3) der Erzeugungsprozeß darf nicht
die Speicherbereiche überschreiben, von denen Daten ausgelesen werden, und (4) der Prozeß muß zur Gänze in Echtzeit
arbeiten.
Eine Interrupt-Routine zum Versorgen des Streifenfeldes soll nun unter Bezugnahme auf Fig. 6 bis 11 beschrieben
werden, um die System-Software genauer zu beschreiben. Diese Interrupt-Routine ist für den bevorzugten
8085-Prozessor entworfen. Die Entwurfsüberlegungen, die in dieser Beschreibung vorgebracht werden, sind aber auch für
andere Anwendungen anwendbar.
Die Streifenfeld-Interrupt-Routine führt alle direkten Zeichenerzeugungs-Interface-Funktionen zwischen den Datenstrukturen
durch, die die Zeichen und die Hardware von Fig. 2, 3, 4 und 5 darstellen. Sie muß eine Anzahl von
möglichen Ereignissen berücksichtigen und in "Echtzeit" laufen, da die Erzeugung eines jeden Zeichens eins Aktion
durch die Interrupt-Routine erfordert. Funktional muß die
- 33 -
3U1640 -
Interrupt-Routine sicherstellen, daß jedes Zeichen am richtigen Platz zur richtigen Zeit erzeugt wird und
muß signalisieren, wenn es nicht möglich ist, das Zeichen zur Zeit zu erzeugen. Die Routine ist so geschrieben, daß,
wenn ein Zeichen erzeugt werden muß, die Hardware so schnell wie möglich gestartet wird und das verbleibende "Hausarbeit"
durchgeführt wird, während die Hardware das Zeichen erzeugt. Die Hardware ist so gestaltet, daß sie nur eine Minimalanzahl
von Information benötigt, um ein Zeichen zu erzeugen, d.h. die Pixelposition, an welcher die Erzeugung gestartet
wird, und die komplette Zeichenidentifikation (Zeichennummer und -quelle).
Da das Drucken des Streifens in der Abtastreihenfolge der Maschinenadressierschaltung von Fig. 5 fortschreitet,
und da die Erzeugung der Zeichen jeweils ihrem Drucken vorangehen muß, sortiert die CPU 15 beim Starten
anfangs alle hereinkommenden Zeichen nach ihrer Startabtast ze ilennummer. Ein "Bin"-Sortieren ist vorzuziehen.
In diesem speziellen Fall meint Bin-Sortieren, daß es ein Feld von Pointern gibt, wobei jeder Eintrag eine Abtastzeile
repräsentiert. Die Pointer zeigen auf eine verknüpfte Liste aller Zeichen, die in dieser Abtastzeile
beginnen. Der Index im Feld 17 spezifiziert die Abtastzeilennummer. Beim Starten wird, da jedes Zeichen über die
- 34 -
CPU 15 von der Quelle 11 empfangen wird und seine
Druckstellung bestimmt wird, das Zeichen sortiert durch Herausfinden der Abtastzeilennummer seiner Startabtastzeile
(die erste Abtastzeile mit einem Pixel darin) und durch Verknüpfen des Zeichens mit dem geeigneten
Platz im Zeilenindexfeld. Wenn alle Zeichen für eine Seite durch die CPU 15 empfangen wurden, wird ein spezieller
Pointerwert (FFOO) in das Pointerfeld plaziert an der Zeile nach der letzten benutzten Zeile. So haben alle Abtastzeilenpointer
entweder einen NILL-Wert (0), was heißt, daß es kein Zeichen gibt, das in dieser Abtastzeile beginnt,'
den Wert OFFOOH, was bedeutet, daß diese Abtastzeile das Ende der Seite ist, oder einen Pointer auf eine
verknüpfte Liste von Zeichen, die auf dieser Abtastzeile beginnen.
Während der Durchführung verfolgt die Interrupt-Routine mit einer als BLINE bezeichneten Variablen, welche
Abtastzeile von Zeichen sie versucht zu erzeugen. Sie verfolgt auch, ob die Abtastzeilennummer (Modulo der Größe
des Streifens) in einer Variablen namens YORG. YORG ist der Wert, der momentan in Hardware-Y-UrSprungsregister 112
plaziert ist, um den Platz im Speicherfeld 17 zu bestimmen, in welchem die Zeile erzeugt wird.
- 35 -
Jedes Zeichen das in einer Abtastzeile beginnt, wird mit allen anderen verknüpft, die in dieser Abtastzeile
beginnen. Die Zeichenzellen im Speicher von CPU 15 enthalten nur die Minimalmenge von Informationen, die erforderlich
sind, um einmalig dieses Zeichen zu spezifizieren und zum nächsten Zeichen zu zeigen. Diese Information
ist in einer Form gepackt, daß sie direkt während der Ausführungszeit in die Hardwareregister geladen werden kann.
Jede Zeichen ze He im CPU-Speicher enthält :
1. Einen Zeichencode, der in die Hardware-Zeichenregister 105 geladen werden soll. Dieser Code spezifiziert,
welches Zeichen erzeugt werden soll.
2. Eine Byte-Position entlang der Abtastzeile, in welcher die Zeichenerzeugung begonnen wird, welche in das
X-Ursprungsregister 123 geladen wird.
3. Die Quelle, die unteren 3 Bits des Platzes entlang der Abtastzeile und das höchste Bit des Platzes entlang
der Abtastzeile, welche in das Quell-ETC-Register 113 geladen wird. Das Laden dieses Registers hat
auch den Nebeneffekt, daß, wie oben erwähnt, das Zeichen tatsächlich gebildet wird.
4. Einen 2-Byte-Pointer zum nächsten Zeichen, das in dieser Zeile gebildet werden soll. Wenn dieser Pointer "0"
ist, sollen keine Zeichen mehr in dieser Zeile erzeugt werden.
- 36 -
34416AO
Es soll festgestellt werden, daß die Abtastzeilennummer nicht in der Zeichenzelle gehalten werden muß, da sie
impliziet in der Tatsache enthalten ist, daß die Zeichenzelle verknüpft ist in einer verknüpften Liste von Zeichenzellen,
auf deren Kopf gewiesen wird durch die Eintragung im Zeilenindexfeld.
Während der Durchführung überwacht die Interrupt-Routine das Zeichen, das als nächstes erzeugt werden soll, mit dem
Pointer PNXT. Dieser Pointer wird immer auf die Zelle des nächsten zu erzeugenden Zeichens gehalten. Dies erlaubt der
Interrupt-Routine immer einen Erzeugungsprozeß zu starten, bevor irgendwelche Hausarbeit gemacht wird, z.B. Herausfinden
des nächsten Zeichens das erzeugt werden soll, wodurch der CPU-Haushalt mit der Zeichenerzeugung überlagert wird,
Man kann sich die Interrupt-Routine vorstellen in verschiedenen
Haupt-"Zuständen" der Durchführung, auch wenn sie nicht streng als Statusmaschine konstruiert ist. Um diese
Zustände zu verstehen, ist es nötig, die Grundnatur des Streifenfeldprozessors zu verstehen. Erinnert man sich, daß ein
Zeichen nicht erzeugt werden kann, wenn irgendeine Möglichkeit besteht, daß es die Zeile überschreibt, die die Maschine im
Moment liest, so kann man verstehen, daß manchmal, auch wenn ein Zeichen fertig zum Erzeugen ist, seine Erzeugung verzögert
- 37 -
werden muß, bis die Maschine genügend Abtastzeilen geleert
hat, so daß das Zeichen erzeugt werden kann ohne überschreiben. Während die Interrupt-Routine darauf wartet,
daß die Maschine genügend Abtastzeilen geleert hat, sagt man, daß sie in einem "außerhalb des Fensters"-Zustand ist.
Wenn die Interrupt-Routine in der Lage ist, Zeichen zu erzeugen, ohne die Gefahr eines Überschreibens der aktuellen
Maschinenabtastzeile, sagt man sie ist im "im Fenster"-Zustand, Diese beiden Zustände bilden die Hauptzustände der Interrupt-Routine.
In Fig. 6 ist das erste, was die Interrupt-Routine überprüft, wenn sie ihren Betrieb startet als Antwort auf einen
Interrupt, ob sie "im Fenster" ist. Ein als WFLAG bezeichnetes Byte überprüft diese Bedingung. Wenn WFLAG "0" ist (Test 300,
Fig. 6),ist die Interrupt-Routine "im Fenster" (in-window).
Wenn die Interrupt-Routine im Fenster ist, kann sie beginnen, die Hardware zu veranlassen, das nächste Zeichen zu
erzeugen, aber nur wenn das vorangegangene Zeichen vervollständigt ist. Es soll festgestellt werden, daß Interrupts
verursacht sein können entweder durch die Erhöhung der Maschinenabtastzeilennummer
oder durch Vervollständigung einer Zeichenerzeugung, oder durch beides.
Die Interrupt-Routine überprüft deshalb als nächstes,
ob die vorangegangene Zeichenerzeugung fertig ist (Test 301).
- 38 -
Wenn sie noch nicht vollständig ist, verzweigt sie zu einem Bereich mit der Bezeichnung LINTST (Fig. 9), welcher
die Maschinenabtastzeileninterrupts behandelt. Wenn das Zeichen fertig ist, weiß die Interrupt-Routine daß sie
die Erzeugung eines weiteren Zeichens starten kann. Sie muß aber, bevor sie den Inhalt der Zeichenzelle im CPU-Speicher
ausschreiben kann, überprüfen, ob sie eine neue Abtastzeilennummer senden muß. Dies wird durchgeführt durch Überprüfen
eines Wertes namens NEWFLAG (Test 303) . Wenn NEWFLAG nicht "0" ist, wird eine neue Abtastzeilennummer in das Y-Ursprungsregister
112 in der Hardware geschrieben, und NEW-FLAG wird auf "0" gesetzt.
Als nächstes, wie im Block 305 angedeutet, werden die Inhalte der Zeichenzelle, auf die PNXT deutet, in die
geeigneten Register 105, 123, 113 geschrieben, um den Zeichenerzeugungsprozeß zu starten.
Nun muß, während das vorangegangene Zeichen erzeugt wird, die Interrupt-Routine das nächste zu erzeugende
Zeichen finden und den geeigneten Pointer in PNXT setzen. Um dies zu tun überprüft sie, ob das Byte hoher Ordnung
des Pointers auf das nächste Zeichen in der vorliegenden Zeichenzelle "0" ist (Test 309) . Wenn es nicht "0" ist,
setzt sie nur den gesamten 2-Byte-Pointerwert in PNXT
(Block 311), da weiter keine Zeichen in dieser Zeile zu erzeugen sind.
- 39 -
Wenn dieses Zeichen das letzte in der Abtastzeile war, welche durch BLINE bestimmt wird, muß die
Routine die nächste Zeile mit Zeichen darin finden. Um dies zu erreichen, sucht sie durch das Zeilenindexfeld
nach einem Eintrag der nicht "0" ist. Ein nicht-"0"-Wert kann entweder bedeuten eine Abtastzeile mit Zeichen darin
oder das Ende der Seite (wenn der Eintrag im Zeilenindexfeld OFFOOH ist). Diese Suche wird durchgeführt durch
ein Codefeld mit der Bezeichnung FINDLIN, welches in Fig. 7 gezeigt ist. Bevor FINDLIN seinen Suchprozeß startet,
ruft es aber eine Subroutine mit dem Namen INWIND, um zu bestimmen, ob die Maschine den Erzeugungsprozeß
übernommen hat (Block 321 von Fig. 7).
Die Subroutine INWIND von Fig. 8 vergleicht den aktuellen
BLINE-Wert und die aktuelle Maschinenabtastzeilennummer (enthalten in einer Variablen namens ENG), um zu bestimmen,
ob ein ausreichender Puffer ("unteres Fenster") zwischen den beiden besteht. Dies ist angedeutet durch den Block
von Fig. 8. Vor diesem Vergleich führt die Routine einen Echtzeitfehlertest 381 durch, um sicherzustellen, ob die
Maschine tatsächlich den Erzeugungsprozeß übernommen hat und ändert den Maschinenabtastzeilenwert in einen Pointerwert
im Zeilenindexfeld.
- 40 -
Wenn der Maschinenwert den Erzeugungsprozeß übernommen hat, setzt die INWIND-Routine WFLAG. Zusätzlich
setzt die Routine ein Bit in der Variablen TFLAG, um anzuzeigen, daß einige der Seiten nicht gedruckt
wurden. TFLAG kann benutzt werden durch die anderen Routinen, um zu bestimmen, was das Streifenfeld getan
hat beim Drucken der Seite. Wenn INWIND entdeckt, daß die Maschine den Erzeugungsprozeß übernommen hat, wird
sie, statt zurückzukehren, zum Find2 : Label (Fig. 7) springen. Im Find2 überspringt der Prozessor eine Anzahl
von.Zeilen, um eine neu erzeugte Zeile einzurichten und führt erneut INWIND durch.
Wenn der untere Fenstervergleich 383 bestätigt, daß die Maschine den Erzeugungsprozeß nicht übernommen hat,
wird ein zweiter Test 389 durchgeführt, um festzustellen, daß ausreichend Pufferplatz ("oberes Fenster") zwischen
dem Erzeugungsprozeß und dem Maschinenprozeß besteht, d.h. daß kein Risiko besteht, daß der Erzeugungsprozeß
die Maschine überschreiben wird. Wenn ein solches Risiko besteht, setzt die Software WFLAG und wartet (Block 391),
daß ausreichend Pufferplatz entsteht, wenn der Maschinenprozeß zusätzliche Zeilen zum Drucker 13 ausliest. Wenn
der Test 389 anzeigt, daß ein ausreichendes Fenster existiert, wird vor der Rückkehr WFLAG, wenn nötig, wieder
Null gesetzt.
- 41 -
Angenommen, daß INWIND feststellt, daß das System "im Fenster" ist, fährt der FINDLIN-Code fort, die nächste
Abtastzeile zu finden mit damit verknüpften Zeichen. Er tut dies durch einfaches Erhöhen von BLINE (Block 325) , damit
dieser auf die nächste Zeilenindexfeldeintragung zeigt und durch Überprüfen, ob dieser nicht "0" ist (Test 323). Dies
wird fortgeführt, bis er einen nicht-"0"-Eintrag findet. Dieser Prozeß kann sehr lange Zeit dauern, wenn sehr viele
Leerzeilen in Folge auftreten. Da die Interrupt-Routine
auch für die überwachung der Maschinenabtastzeile verantwortlich ist, und da alle anderen Interrupts deaktiviert
werden, während die Interrupt-Routine läuft, wird das
Maschinenleitung-Zurverfügung-Bit durch Lesen des Bit 1 des SMC-Status immer wieder überprüft, und es wird ein neuer
Wert eingelesen, wenn er zur Verfügung steht (Test 327, Block 321). Um die Zeilensuchprozedur schneller zu machen
werden zehn Zeilen überprüft, bevor das Maschinenzeilen-Zurverfügung-Bit
überprüft wird, wie durch Test 327 angezeigt.
Beim Finden eines nicht-"0"-Wertes im Zeilenindexfeld
bei Test 323 bestimmt die Interrupt-Routine als nächstes, ob dies eine "Ende der Seite"-Markierung ist oder ein Pointer
zu einer verknüpften Liste von Zeichenzellen (Test 333).
- 42 -
Wenn es die "Ende der Seite"-Markierung ist/ verzweigt
sie zum Pagend:Label. Bei diesem Label wird die Prozessor-Interrupt-Aktivierung
zurückgesetzt und ein "synch to time slot" erreicht.
Wenn die Seite nicht beendet ist, sichert der Prozessor den aktuellen BLINE-Wert (Block 335) und ruft INWIND
bei 337. Angenommen, das System befindet sich "im Fenster", setzt der Prozessor NEWFLAG (Block 339).
Wenn es die Maschine zu diesem Zeitpunkt irgendwie geschafft hat, den Erzeugungsprozeß zu überholen (was
wahrscheinlich nicht möglich ist ), wird INWIND natürlich nicht zurückkehren, sondern statt dessen das TFLAG-Bit
setzen und nach Find2 springen, wie es dies zuvor getan hat. Wenn die Maschine den Erzeugungsprozeß nicht überholt
hat, kehrt INWIND zurück, wobei WFLAG auf den geeigneten Wert gesetzt ist.
Da die Hardware nur einen einzigen damit verbundenen Interrupt-Vektor hat, und da sie Zeichen erzeugen muß und
die laufende Maschinenabtastzeile überwachen muß (so daß sie weiß, ob sie Zeichen erzeugen kann),muß die CPU 15
überprüfen, ob die Interrupt-Quelle eine Vervollständigung des Zeichenerzeugungsprozesses war oder die Beendigung
einer Abtastzeile durch den Maschinenprozeß und das Fortschreiten zur nächsten. Der Test 301 in Fig. 6 bestimmt
- 43 -
• * W „
den Interrupt-Typ und verzweigt zum LINTST-Label wenn der
Interrupt kein Zeichen-Interrupt war. Das LINTST-Programm von Fig. 9 führt ein überprüfen und Bearbeiten des Falles
der Maschinenzeilenerhöhung durch.
Wenn bei Test 341 bestimmt wurde, daß eineMaschinenabtastzeilenerhöhung
sich ergeben-hat/ muß die Interrupt-Routine
dies einlesen (Block 343) . Einlesen des Bytes mit niedriger Ordnung löscht das anhängige Interruptbit. Dann
wird ein Test 345 für den Fensterzustand durchgeführt. Wenn der Prozessor "außer Fenster" ist, ruft er INWIND (Block 347)
und überprüft und setzt Flags im Falle, daß das System jetzt "im Fenster" ist. Dieser Ruf ist der einzige, der die Interrupt-Routine
in den "im Fenster"-Zustand plazieren kann, nachdem sie im "außer Fenster"-Zustand war. Wenn die Routine
"außer Fenster" war, und "im Fenster" ist, kann die CPU 15 das Senden von Zeichen zur Hardware erneut beginnen und
tut dies auch. Um dies zu erreichen überprüft die Routine, ob die Zeichenerzeugungs-Hardware nicht damit beschäftigt
ist, ein Zeichen zu erzeugen (Test 349). Wenn sie nicht beschäftigt ist, springt die Routine zum WRK2: Label
(Fig. 6) und läuft durch den gleichen Prozeß, als ob sie einen Zeicheninterrupt erhalten hätte. Wenn die Hardware
beschäftigt ist, ein Zeichen zu erzeugen, kann vielleicht ein Zeichenvervollständigungs-Interrupt empfangen werden.
Deshalb kann die Routine sicher herausgehen, wie durch BLDXIT angezeigt.
- 44 -
Wenn beim Beginn der Interrupt-Routine ein "außer Fenster"-Zustand entdeckt wird (Test 300) , verzweigt die
Interrupt-Routine zum WTST: Label (Fig. 11), welches durch
Lesen eines geeigneten I/O-Kanals (64H) alle anhängigen
Zeicheninterrupts löscht. Sie fährt dann mit dem üblichen LINTST-Programm (Fig. 9) fort. Dies vermeidet jegliche
weitere Zeichenerzeugung, bevor wieder in den "im Fenster"-Zustand
eingetreten wird.
Nun wird das Vorgehen beim Herausgehen (exiting) in Verbindung mit Fig. 10 beschrieben, welche das Label BLDXIT
zeigt. Die Ausgangsprozedur überprüft, ob sie überhaupt warten muß (Test 360) (wenn nicht mehr als etwa 120 Mikrosekunden
vergangen sind, seit dem Start der Interrupt-Routine, kann sie jeder Zeit aus dem Interrupt zurückkehren). Wenn
ein Warten nötig ist, überprüft der Prozessor, ob noch eine weitere Zeichenerzeugung oder andere Aufgaben durchgeführt
werden sollen. Wenn es nicht möglich ist, auszusteigen, und wenn weitere Arbeit vorliegt, wird diese durchgeführt und
am Schluß zum Exit-Code zurückgekehrt. Da die Ausgangsbedingung nun nur geprüft werden, wenn die Arbeit durchgeführt
ist, kann der nächste Ausgangsslot verpaßt werden. Das System kann in der Interrupt-Routine gefangen bleiben
während der gesamten Dauer des Seitendrucks. Um zu vermeiden, daß eine solche Sperre auftritt, wird der Zählwert der Anzahl
- 45 -
im ♦ · »
von erfolglosen Ausgangsversuchen XITPAS aufgenommen .(Block 369) und überprüft (Test 371). Wenn eine ausgewählte
Anzahl von Versuchen überschritten wird, hört der Prozessor auf, zu versuchen, sinnvolle Arbeit durchzuführen
und versucht nur noch auszusteigen.
Wenn die Interrupt-Routine einmal gestartet ist, übernimmt sie die Handhabung aller Variablen, die sie
braucht, und das nächste Mal, wenn sie mit dem Rest des Systemprogrammes zusammenwirkt, ist, wenn sie die "Ende
der Seite"-Markierung feststellt. Zu diesem Zeitpunkt setzt sie ein Bit in TPLAG, erzeugt ein Softwaresignal für den
Maschinenprozeß und deaktiviert ihre eigenen Interrupts.
Um so einfach wie möglich zu starten, und um Verdopplung von Programmbereichen zu vermeiden ist es eine
bevorzugte Startprozedur, die Software "hand craft" das erste Zeichen drucken zu lassen, und alle Pointer zu initialisieren.
Es muß aber sicher sein, daß dieses Zeichen im ersten Streifen liegt und vor allen anderen zu druckenden
Zeichen.
- 46 -
Claims (23)
1. Vorrichtung zur Steuerung der Übertragung von Zeichen zwischen einem Quellspeicher und einem Drucker
gekennzeichnet durch :
Eine Streifenfeldspeichervorrichtung (strip map 5 memory means) zum Abspeichern von Zeichenzeilen, die
weniger als eine ganze Seite enthalt;
eine von ersten Steuersignalen abhängige Vorrichtung zum Extrahieren von Zeichen aus dem Quellspeicher, zum
Einschreiben der Zeichen in einen Streifenfeldspeicher 10 und zum Erzeugen eines ersten Interrupts, wenn ein vollständiges
Zeichen gedruckt ist;
eine von zweiten Steuersignalen abhängige Vorrichtung zum Auslesen der Zeichen aus dem Streifenfeldspeicher und
zum Liefern eines zweiten Interrupts, wenn eine neue Zei-15 chenzeile ausgelesen werden soll; und
"" "" * iv"lay"v»
· HAMBURG 147607-200 (BLZ 200100 20>
Td cr,RAMM. SPECHTZIES
3U1640
eine programmierte Prozessorvorrichtung zum Liefern
der ersten und der zweiten Steuersignale, zum Aufrechterhalten einer ersten Zeilenanzeige, die die Zeile des
Streifenfeldspeichers anzeigt, in die Zeichen eingeschrieben werden, und einer zweiten Zeilenanzeige, die
anzeigt, aus welcher Zeile des Streifenfeldspeichers Zeichen ausgelesen werden; und zum Ableiten einer Fensteranzeige
mindestens aus der ersten Zeilenanzeige, wobei die Fensteranzeige anzeigt, ob Speicherplatz zum Einschreiben
weiterer Zeichen in den Streifenfeldspeicher zur Verfügung steht, wobei die programmierte Prozessorvorrichtung
in Abhängigkeit vom Auftreten des ersten oder des zweiten Interrupts die Fensteranzeige überprüft, um
ein neues Zeichen zu bilden, wenn die überprüfung ergibt, daß Speicherplatz zur Verfügung steht und ein Interrupt
des ersten Typs aufgetreten ist, und um in Abhängigkeit von einem Interrupt des zweiten Typs eine aktuelle zweite
Zeilenanzeige zu lesen.
2. Vorrichtung nach Anspruch 1 , dadurch g e kennzeichnet, daß die Zeichenschreibvorrichtung
enthält :
Eine Vorrichtung zum Extrahieren von Zeichenparameterinformation
vom Quellspeicher, welche einen Zeichenhöhenzählwert, einen Zeichenbreitenzählwert und eine Quelladressinformation
enthält;
eine Höhenzählervorrichtung zum Speichern und Dekrementieren
des Zeichenhöhenzählwertes;
eine Breitenzählervorrichtung zum Speichern und Dekrementieren des Zeichenbreitenzählwertes; und
eine Quelladressvorrichtung zum Speichern und Inkrementieren der Quelladressinformation, um das Zeichen aus
dem Quellspeicher auszulesen.
3. Vorrichtung nach Anspruch 2 , dadurch ge kennzeichnet , daß sie ferner aufweist :·
Eine Vorrichtung zum Abspeichern einer Zeilenadresse und zum Erhöhen der Zeilenadresse, um aufeinanderfolgende
Zeilenadressen zu erzeugen;
eine Vorrichtung zum Speichern der Spaltenadresse und zum Erhöhen der Spaltenadresse, um aufeinanderfolgende
Spaltenadressen zu erzeugen; und
eine Vorrichtung zum Zuführen der Zeilen- und Spaltenadressen zur Vorrichtung, um ein Auslesen eines Zeichens
aus dem Quellspeicher durch die Quelladressvorrichtung zu verursachen, welches in der Speichervorrichtung gespeichert
werden soll.
4. Vorrichtung nach Anspruch 3 , dadurch gekennzeichnet , daß die Prozessorvorrichtung
eine Bitversetzungsanzeige für die Vorrichtung aufweist, um Zeichenparameterinformation zu extrahieren und eine
Zeichenextraktionsvorrichtung zu aktivieren durch Erzeugen
von ersten und zweiten Steuersignalen, wobei die Prozessorvorrichtung
daraufhin nicht gegen die Generation des ausgewählten Zeichens in der Streifenfeldspeichervorrichtung
interveniert.
5. Vorrichtung nach Anspruch 2 oder 3 , dadurch gekennzeichnet / daß sie weiterhin eine
Vorrichtung aufweist, die in Abhängigkeit von einem Zählwert, der das Ende einer Zeichenzeile anzeigt, die
Höhenzählervorrichtung dekrementiert und die Breitenzählervorrichtung
neu lädt.
6. Vorrichtung nach Anspruch 5 , dadurch ge kennzeichnet , daß sie ferner eine logische
Vorrichtung aufweist, um einen Interrupt zum Prozessor zu liefern, wenn der Höhenzähler einen Wert erreicht,
der anzeigt, daß ein vollständiges Zeichen aus dem Quellspeicher ausgelesen wurde.
7. Vorrichtung nach Anspruch 1 , dadurch gekennzeichnet , daß die Zeichenlesevorrichtung
ferner enthält:
Eine Vorrichtung zum Liefern einer Reihenadresse an die Speichervorrichtung;
eine Vorrichtung zum Liefern einer Zeilenadresse an die Speichervorrichtung; und
eine Vorrichtung zum Erzeugen des zweiten Interrupts, wenn eine vollständige Zeile aus der Streifenfeldspeichervorrichtung
ausgelesen wurde.
8. Vorrichtung nach Anspruch 1 , dadurch gekennzeichnet , daß der Prozessor die Fensteranzeige bestimmt durch Subtraktion einer unteren Fensterkonstante von der laufenden Zeile, in welcher die Zeichen
gebildet werden.
9. Vorrichtung nach Anspruch 4 , dadurch gekennzeichnet , daß Zeilen übersprungen werden,
wenn bei dieser Subtraktion ein übertrag auftritt.
10. Vorrichtung nach Anspruch 5 , dadurch g e kennzeichnet, daß, wenn kein übertrag auftritt,
eine obere Fensterkonstante von der laufenden Bildungszeile subtrahiert wird.
11. Vorrichtung nach Anspruch 6 , dadurch gekennzeichnet , daß ein Warten für das Fenster
durchgeführt wird, wenn durch die Subtraktion der oberen Fensterkonstante kein übertrag erzeugt wird.
12. Vorrichtung nach Anspruch 1 , dadurch gekennzeichnet , daß die Prozessorvorrichtung
auf.den ersten Interrupt und eine Im-Fensteranzeige antwortet, um die ersten Steuersignale zu erzeugen.
13. Vorrichtung nach Anspruch 8 , dadurch gekennzeichnet , daß die Prozessorvorrichtung
ferner in Abhängigkeit von dem ersten Interrupt und der Im-Fensteranzeige Zellendaten an die Schreibvorrichtung
sendet, welche eine Zeichenidentifikation, eine Quell-Speicheradresse
und eine Pixeladresse enthalten.
14. Vorrichtung nach Anspruch 13 , dadurch gekennzeichnet , daß vor dem Senden der Zellendaten
die Prozessorvorrichtung ein Flag überprüft, welches anzeigt, ob das durch die Zelle identifizierte Zeichen in
einer neuen Zeile beginnt, und wenn ja, eine neue Abtastzeilennummer in die Zeichenschreibvorrichtung einschreibt.
15. Vorrichtung nach Anspruch 14 , dadurch gekennzeichnet , daß die Prozessorvorrichtung
einen Pointer aufrechterhält, der auf die Zelle deutet, welche das nächste zu bildende Zeichen repräsentiert, und
den Pointer nach dem Senden der Zelldaten aktualisiert.
16. Vorrichtung nach Anspruch 15 , dadurch gekennzeichnet , daß der Prozessor eine Routine
durchführt zum Lokalisieren der nächsten Zeile mit einem Zeichen darin, wenn keine Zeichen mehr in der laufenden
gebildeten Zeile vorhanden sind.
17. Vorrichtung nach Anspruch 16 , dadurch gekennzeichnet , daß die Routine den Schritt
der Überprüfung enthält, ob die Im-Fenster-Bedingung vorliegt,
und, wenn ja, der Überprüfung der darauffolgenden Zeilen nach einer Zeile mit einem Zeichen.
18. Vorrichtung nach Anspruch 17 , dadurch gekennzeichnet , daß nach dem Testen einer vorgewählten
Anzahl von Zeilen durch die Routine die Prozessorvorrichtung einen Test (329) durchführt, um zu bestimmen,
ob Maschinen-Zeilendaten zur Verfügung stehen, und wenn ja, jeglichen zweiten Interrupt löscht und die Maschinen-Zeilennummer
prüft.
19. Vorrichtung nach Anspruch 18 , dadurch gekennzeichnet , daß, wenn die Zeile gefunden
ist, die Prozessorvorrichtung einen Ende-der-Seite-Test durchführt und wenn nicht, einen Im-Fenster-Test.
20. Vorrichtung nach Anspruch 1 , dadurch gekennzeichnet , daß die Prozessorvorrichtung
zu Beginn den Im-Fenster-Zustand überprüft, und, wenn
sie auf das Fenster wartet, eine Im-Fenster-überprüfung
durchführt.
21. Vorrichtung nach Anspruch 14 , dadurch g e kennzeichnet, daß die Prozessorvorrichtung
bei der Im-Fenster-Bedingung einen Test durchführt, um zu bestimmen, ob ein Zeichen gebildet wird.
22. Vorrichtung nach Anspruch 1 , dadurch gekennzeichnet, daß die Zentralprozessor-
vorrichtung zu Anfang die ersten Steuersignale an die Schreibvorrichtung liefert, wobei die Schreibvorrichtung
dann fortfährt, autonom die Zeichen in der Streifenfeldspeichervorrichtung zu bilden, und daß während dieser
Bildung die Zentralprozessorvorrichtung sich regeneriert, um einen zweiten Satz von ersten Steuersignalen zu liefern.
23. Vorrichtung nach Anspruch 22 , dadurch gekennzeichnet , daß das Zeichen-"Schreiben"
und -Lesen" in Echtzeit durch die Vorrichtung durchgeführt wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/551,141 US4646259A (en) | 1983-11-14 | 1983-11-14 | Strip map memory controller |
Publications (1)
Publication Number | Publication Date |
---|---|
DE3441640A1 true DE3441640A1 (de) | 1985-05-23 |
Family
ID=24200039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19843441640 Withdrawn DE3441640A1 (de) | 1983-11-14 | 1984-11-14 | Streifenfeldspeichercontroller |
Country Status (3)
Country | Link |
---|---|
US (1) | US4646259A (de) |
JP (1) | JPS60115458A (de) |
DE (1) | DE3441640A1 (de) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60181942A (ja) * | 1984-02-29 | 1985-09-17 | Fujitsu Ltd | メモリ制御装置 |
US4847787A (en) * | 1984-12-28 | 1989-07-11 | Minolta Camera Kabushiki Kaisha | Dot image character generator employing a font memory |
US4843570A (en) * | 1984-12-29 | 1989-06-27 | Cannon Kabushiki Kaisha | Block processing apparatus |
NL8502642A (nl) * | 1985-09-27 | 1986-04-01 | Oce Nederland Bv | Raster-beeld-processor. |
JPH073631B2 (ja) * | 1986-02-05 | 1995-01-18 | ミノルタ株式会社 | フォントカートリッジとそのデータ管理方法 |
US4916301A (en) * | 1987-02-12 | 1990-04-10 | International Business Machines Corporation | Graphics function controller for a high performance video display system |
JP2644224B2 (ja) * | 1987-03-27 | 1997-08-25 | 株式会社日立製作所 | 画像形成データ制御装置 |
US5341471A (en) * | 1987-03-27 | 1994-08-23 | Hitachi, Ltd. | Controller for accessing an image data memory based on a state of a hard copy printer |
US5179635A (en) * | 1987-03-27 | 1993-01-12 | Hitachi, Ltd. | Image memory controller |
JP2550570B2 (ja) * | 1987-04-16 | 1996-11-06 | ブラザー工業株式会社 | 印字装置 |
AU621545B2 (en) * | 1987-05-15 | 1992-03-19 | Sci Systems, Inc. | Printing apparatus and method |
JPH0246490A (ja) * | 1988-08-06 | 1990-02-15 | Mitsubishi Electric Corp | メモリ回路 |
US5003471A (en) * | 1988-09-01 | 1991-03-26 | Gibson Glenn A | Windowed programmable data transferring apparatus which uses a selective number of address offset registers and synchronizes memory access to buffer |
JPH0412874A (ja) * | 1990-05-01 | 1992-01-17 | Minolta Camera Co Ltd | プリンタ制御装置 |
US6311286B1 (en) * | 1993-04-30 | 2001-10-30 | Nec Corporation | Symmetric multiprocessing system with unified environment and distributed system functions |
US5579477A (en) * | 1994-07-25 | 1996-11-26 | Compaq Computer Corporation | Test circuitry for printer memory |
US6323854B1 (en) * | 1998-10-31 | 2001-11-27 | Duke University | Multi-tile video display system with distributed CRTC |
US6570546B1 (en) | 1998-10-31 | 2003-05-27 | Duke University | Video display configuration detector |
US20070216685A1 (en) * | 2006-03-15 | 2007-09-20 | Microsoft Corporation | Scene write-once vector and triangle rasterization |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4300206A (en) * | 1977-06-30 | 1981-11-10 | International Business Machines Corporation | Flexible text and image generator for a raster printer |
JPS5541534A (en) * | 1978-09-18 | 1980-03-24 | Toshiba Corp | Information recording device |
US4251871A (en) * | 1978-09-29 | 1981-02-17 | International Business Machines Corporation | Method and apparatus for storing and reconstructing Chinese-like characters |
US4258418A (en) * | 1978-12-28 | 1981-03-24 | International Business Machines Corporation | Variable capacity data buffer system |
GB2059728B (en) * | 1979-09-27 | 1983-03-30 | Ibm | Digital data display system |
JPS5654489A (en) * | 1979-10-09 | 1981-05-14 | Epson Corp | Character formation system |
US4333153A (en) * | 1979-11-26 | 1982-06-01 | Eltra Corporation | Scanning and control system for electro optical printer |
US4371948A (en) * | 1980-05-07 | 1983-02-01 | Burroughs Corporation | Train printer-data link processor |
US4370730A (en) * | 1980-05-07 | 1983-01-25 | Burroughs Corporation | Ram buffer memory circuit system for train printer-data link processor |
US4386415A (en) * | 1980-05-07 | 1983-05-31 | Burroughs Corporation | Compare logic circuit for train printer-data link processor |
US4371950A (en) * | 1980-06-26 | 1983-02-01 | Burroughs Corporation | Peripheral control interface circuit for train printer-data link processor |
JPS5769971A (en) * | 1980-10-20 | 1982-04-30 | Ricoh Co Ltd | Video information processing system |
US4381553A (en) * | 1981-01-22 | 1983-04-26 | Mohawk Data Science Corp. | Programmable printer controller with multiline buffering and overstrike feature |
US4470129A (en) * | 1982-01-29 | 1984-09-04 | International Business Machines Corporation | Page modification method in a printer subsystem of the partial page buffer composing type |
US4476542A (en) * | 1982-05-10 | 1984-10-09 | Xerox Corporation | Printing system |
-
1983
- 1983-11-14 US US06/551,141 patent/US4646259A/en not_active Expired - Lifetime
-
1984
- 1984-11-12 JP JP59238231A patent/JPS60115458A/ja active Pending
- 1984-11-14 DE DE19843441640 patent/DE3441640A1/de not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
JPS60115458A (ja) | 1985-06-21 |
US4646259A (en) | 1987-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0096079B1 (de) | Verfahren zur Aufbereitung von Punktrasterdaten für Zeichen- und/oder Bilddarstellungen | |
DE3441640A1 (de) | Streifenfeldspeichercontroller | |
DE3346816C2 (de) | ||
DE2550268C3 (de) | Schnelldrucker für Datenverarbeitungssysteme | |
DE2515696C2 (de) | Datenverarbeitungssystem | |
DE2558498C2 (de) | Vorrichtung zur Darstellung von aus Bildpunkten zusammengesetzten Zeichen | |
DE3151745C2 (de) | ||
DE1499182C3 (de) | Datenspeichersystem | |
DE2755728B2 (de) | Kathodenstrahlröhren-Anzeigegerät | |
DE2844357A1 (de) | Speichererweiterung | |
DE2144596A1 (de) | Video-Anzeigevorrichtung | |
DE2755981A1 (de) | Wiedergabesystem | |
DE1774052B1 (de) | Rechner | |
DE3716752C2 (de) | ||
DE2724199C2 (de) | ||
DE2432608A1 (de) | Speicheranordnung fuer datenverarbeitungseinrichtungen | |
DE2550212C3 (de) | Drucker mit Pufferspeicher | |
DE3347644A1 (de) | Grafikanzeigeeinrichtung | |
DE4005673A1 (de) | Bilderzeugende einrichtung mit einem kleindimensionierten speicher mit einem bitkarten-zuweisungssystem | |
DE2149200A1 (de) | Anordnung zum Steuern der Informationsuebertragung zwischen einerseits dem Zentralteil und andererseits entweder einem beliebig zugreifbaren Schnellspeicher oder einem beliebig zugreifbaren direkt adressierbaren Grossspeicher einer elektronischen Datenverarbeitungsanlage | |
DE4035533A1 (de) | Bildsteuervorrichtung mit einem mehrfachbus fuer farbdrucker | |
DE3506592C2 (de) | Aufzeichnungsgerät | |
DE1499191B2 (de) | Elektronische einrichtung fuer eine datenverarbeitungsanlage | |
DE3153695C2 (de) | Punktmuster-Ausgabevorrichtung | |
DE1524155A1 (de) | Verfahren und Schaltungsanordnung zum Einspeichern und/oder Lesen von Informationen in einem Speichersystem,das mit mehreren Verarbeitungseinrichtungen einer Datenverarbeitungsanlage zusammenarbeitet |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8139 | Disposal/non-payment of the annual fee |