DE3441640A1 - Streifenfeldspeichercontroller - Google Patents

Streifenfeldspeichercontroller

Info

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
Application number
DE19843441640
Other languages
English (en)
Inventor
Geoffrey Nashua N.H. Dreher
Andrew James Concord Mass. Lincoln
Robert Arlington Mass. Osborn
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Minolta Co Ltd
Original Assignee
Minolta Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Minolta Co Ltd filed Critical Minolta Co Ltd
Publication of DE3441640A1 publication Critical patent/DE3441640A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K2215/00Arrangements for producing a permanent visual presentation of the output data
    • G06K2215/0002Handling the output data
    • G06K2215/0062Handling the output data combining generic and host data, e.g. filling a raster
    • G06K2215/0065Page 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*.
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.
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.
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
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
I/O-Adresse Aktion
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
Bit 3 Erzeugen eines Zeichens im Streifenfeld 17.
Die verbleibenden Bits sind immer 0.
Die I/O-Schreibkanäle und ihre Signifikanz sind :
Relative
I/Q-Adresse Aktion
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
I/O-Adresse Aktion
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
I/Q-Adresse Aktion
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)

Patentansprüche
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.
DE19843441640 1983-11-14 1984-11-14 Streifenfeldspeichercontroller Withdrawn DE3441640A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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