NL8503461A - METHOD FOR GENERATING LINES. - Google Patents

METHOD FOR GENERATING LINES. Download PDF

Info

Publication number
NL8503461A
NL8503461A NL8503461A NL8503461A NL8503461A NL 8503461 A NL8503461 A NL 8503461A NL 8503461 A NL8503461 A NL 8503461A NL 8503461 A NL8503461 A NL 8503461A NL 8503461 A NL8503461 A NL 8503461A
Authority
NL
Netherlands
Prior art keywords
bus
line
data
lines
bit
Prior art date
Application number
NL8503461A
Other languages
Dutch (nl)
Original Assignee
Oce Nederland Bv
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 Oce Nederland Bv filed Critical Oce Nederland Bv
Priority to NL8503461A priority Critical patent/NL8503461A/en
Publication of NL8503461A publication Critical patent/NL8503461A/en
Priority to DE8686202167T priority patent/DE3679304D1/en
Priority to AT86202167T priority patent/ATE63650T1/en
Priority to EP86202167A priority patent/EP0229412B1/en
Priority to JP61301147A priority patent/JPH0675977B2/en
Priority to US07/290,823 priority patent/US4905166A/en

Links

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/20Function-generator circuits, e.g. circle generators line or curve smoothing circuits
    • 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/0005Accepting output data; Preparing data for the controlling system
    • G06K2215/0014Transforming the printer input data into internal codes
    • 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/004Generic data transformation
    • G06K2215/0042Rasterisation
    • 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/004Generic data transformation
    • G06K2215/0042Rasterisation
    • G06K2215/0048Converting skeleton to bitmap
    • 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
    • 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/0082Architecture adapted for a particular function

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)
  • Dot-Matrix Printers And Others (AREA)
  • Laser Beam Printer (AREA)
  • Character Discrimination (AREA)
  • Record Information Processing For Printing (AREA)
  • Manufacturing Of Printed Wiring (AREA)
  • Light Guides In General And Applications Therefor (AREA)

Abstract

A method of generating a line part of thickness D on a homoge­nenous raster, the raster points of which are arranged in a number of parallel lines, and in which the bit representation of the line part (250) is stored in a word-oriented bit-map memory in the form of a large number of image points or pixels, by- determination of the envelope of the line part and the imaging of said envelope on the raster points,- determination of the length of the section through the line part for the successive raster lines, and- placing of the bit representation of said lengths in the bit-map memory at corresponding locations, the direction of the determined lengths corresponding to the word direction of the bit-map memory.

Description

ΓΓ

— ~-S- ~ -S

< -*<- *

Uitvinder: C,P. SchuermanInventor: C, P. Schuerman

Océ-Nederland B.V., te VenloOcé-Nederland B.V., in Venlo

Werkwijze voor het genereren van li.instukkenMethod for generating parts

De uitvinding betreft een werkwijze voor het genereren van lijnstukken volgens de aanhef van conclusie 1.The invention relates to a method for generating line segments according to the preamble of claim 1.

Een dergelijke werkwijze kan worden toegepast in een electronisch printsysteem, waarbij gegevens omtrent het te vormen lijnstuk met 5 behulp van bijvoorbeeld een aangesloten werkstation kunnen worden ingevoerd en via een front-end systeem dat een woord-geörienteerd bit-map geheugen bevat aan een raster output scanner kunnen worden toegevoerd.Such a method can be applied in an electronic printing system, in which data about the line segment to be formed can be entered using, for example, a connected workstation and via a front-end system containing a word-oriented bit-map memory at a raster output. scanner can be fed.

Dergelijke raster output scanners zijn ingericht om met behulp 10 van serieel aangeboden data lijnsgewijs een volledige pagina af te drukken.Such raster output scanners are arranged to print a full page line by line using serially presented data.

Een typische vertegenwoordiger van dit soort raster output scanners is een laserprinter, waarbij een lichtstraal beeldmatig wordt gemoduleerd en waarbij deze gemoduleerde lichtstraal met behulp van 15 een polygoonspiegel lijnsgewijs wordt afgebogen over een lichtgevoelig oppervlak, zoals een zinkoxide-hinderlaag welke op een flexibele band is aangebracht. Op bekende wijze kan hierop een latent beeld worden geschreven met behulp van de gemoduleerde lichtstraal. Dit latente beeld kan op bekende wijze worden ontwikkeld en overgedragen op een 20 ontvangstmateriaal zoals een blad papier.A typical representative of this type of raster output scanners is a laser printer, in which a light beam is modulated image-wise and this modulated light beam is bent in a line by means of a polygon mirror over a photosensitive surface, such as a zinc oxide ambush which is applied on a flexible belt. . In a known manner, a latent image can be written on this with the aid of the modulated light beam. This latent image can be developed and transferred in a known manner to a receiving material such as a sheet of paper.

Met behulp van het werkstation kan ook tekst worden ingevoerd die eveneens op een pagina moet wordenjafgedrukt. In het front-end wordt deze (gecodeerd) ingevoerde tekst geëxpandeerd met in een geheugen opgeslagen font-data, en de geëxpandeerde tekst wordt eveneens in het 25 bit-map geheugen opgeslagen. Bovendien kan met behulp van een scanner verkregen grafische data van bijvoorbeeld een origineel aan het werkstation en bit-map geheugen worden toegevoerd.The workstation can also be used to enter text that must also be printed on a page. In the front-end, this (encoded) input text is expanded with font data stored in a memory, and the expanded text is also stored in the 25-bit map memory. In addition, graphic data obtained from a scanner, for example, an original can be supplied to the workstation and bit-map memory.

Het werkstation is voorzien van een display met behulp waarvan de af te drukken pagina kan worden samengesteld. Via het werkstation kan de 30 lay-out van de pagina naar believen worden gevarieerd. Met speciale commando's welke via het werkstation worden ingegeven kan het front-end allerlei krommes zoals rechte lijnstukken, cirkels of cirkelbogen, 8503431 v.The workstation is equipped with a display that allows the page to be printed to be assembled. The layout of the page can be varied as desired via the workstation. With special commands that are entered via the workstation, the front-end can create all kinds of curves such as straight segments, circles or arcs, 8503431 v.

t » -2- r· enz. genereren en in het bitmapgeheugen plaatsen.t »-2- r · etc. and place them in the bitmap memory.

De toenemende resolutie van raster output scanners maakt deze steeds beter geschikt voor het afdrukken van grafische informatie. De grafische informatie (lijnstukken e.d.) moeten op het raster van deze 5 raster output scanner afgebeeld worden. Het afbeeldingsproces bestaat uit het bepalen van de verzameling rasterpunten die geactiveerd moeten worden. De geactiveerde rasterpunten worden aldus in een woord georiënteerd bit-map geheugen geschreven. Gezien het grote aantal te genereren rasterpunten is een snelle verwerking hiervan noodzakelijk.The increasing resolution of raster output scanners makes them increasingly suitable for printing graphic information. The graphic information (line segments, etc.) must be displayed on the grid of this 5-grid output scanner. The mapping process consists of determining the collection of grid points to activate. The activated grid points are thus written in a word-oriented bit-map memory. Due to the large number of grid points to be generated, rapid processing is necessary.

10 Het doel van de uitvinding is dan ook om een werkwijze voor het genereren van lijnstukken te verschaffen welke in overeenstemming is met de grote afdruksnelheid bij een hoog oplossend vermogen van de printer.Therefore, the object of the invention is to provide a line generation method which is in accordance with the high printing speed at a high resolution of the printer.

Dit doel wordt volgens de uitvinding bereikt met een werkwijze volgens 15 de aanhef door het kenmerkende gedeelte van conclusie 1.This object is achieved according to the invention with a method according to the preamble by the characterizing part of claim 1.

Hiermee wordt bereikt dat lijnstukgeneraties met eenvoudige en dus snelle algorithmen kunnen worden gerealiseerd en dat het aantal benodigde geheugenaccess cycli minimaal is.This achieves that line segment generations can be realized with simple and thus fast algorithms and that the number of required memory access cycles is minimal.

Deze en andere voordelen zullen duidelijk worden gemaakt aan de 20 hand van de hierna volgende beschrijving en met behulp van figuren, waarvan:These and other advantages will be made clear from the description below and with the aid of figures, of which:

Fig. 1 een schematische weergave van een front-end systeem is,Fig. 1 is a schematic representation of a front-end system,

Fig. 2 de processen weergeeft die door de raster-beeld-processor kunnen worden uitgevoerd, 25 Fig. 3 een schematische weergave van een raster-beeld-processor is,Fig. 2 shows the processes that can be performed by the raster image processor, FIG. 3 is a schematic representation of a raster image processor,

Fig. 4 een schematische weergave van een VME-bus interface is,Fig. 4 is a schematic representation of a VME bus interface,

Fig. 5 een schematische weergave van een laser scan module interface is,Fig. 5 is a schematic representation of a laser scan module interface,

Fig. 6 een schematische weergave van een 16-bits processor systeem van de raster-beeld-processor is, 30 Fig. 7 een schematische weergave van een raster-beeld-bus interface is,Fig. 6 is a schematic representation of a 16-bit processor system of the raster image processor, FIG. 7 is a schematic representation of a raster image bus interface,

Fig. 8 een schematische weergave van een VME-master interface van het VME-bus interface is,Fig. 8 is a schematic representation of a VME master interface of the VME bus interface,

Fig. 9 de plaatsing van een karakter in het bit-map geheugen voorstelt, Fig. 10 de resultaten van een aantal mogelijke bewerkingen in het bit-35 map geheugen weergeeft, enFig. 9 represents the placement of a character in the bitmap memory, FIG. 10 shows the results of a number of possible operations in the bit-35 map memory, and

Fig. 11 een schematische weergave van een raster-beeld-geheugen is.Fig. 11 is a schematic representation of a raster image memory.

Fig. 12 een lijnstuk met ronde einden voorstelt, 8503461 -3-Fig. 12 represents a segment with round ends, 8503461 -3-

Fig. 13 een lijn door de punten P1 en P2 voorstelt,Fig. 13 represents a line through points P1 and P2,

Fig. 14 een detailsehets ter verduidelijking van de bepaling van het snijpunt van de lijn met een cirkel om het beginpunt van die lijn is, 5 Fig. 15 een flow diagram van een werkwijze voor de bepaling van het snijpunt S* is,Fig. 14 is a detail sketch illustrating the determination of the intersection of the line with a circle around the starting point of that line, FIG. 15 is a flow diagram of a method for determining the intersection point S *,

Fig. 16 een lijnstuk, afgebeeld op rasterpunten voorstelt,Fig. 16 represents a line segment depicted on grid points,

Fig. 17 a, b en c een flow diagram van een werkwijze voor een lijngeneratie van een lijnstuk met ronde einden voorstelt, en 10 Fig. 18 een lijnstuk met rechte uiteinden voorstelt.Fig. 17 a, b and c represent a flow diagram of a method for line generation of a segment with round ends, and FIG. 18 represents a straight-ended line segment.

Fig. 1 is een schematische weergave van een front-end systeem. Hierin is een front-end controller 10 (FEC) met een bedieningsconsole 19 verbonden en tevens met het besturingssysteem van een printer 20. Printer 20 is een raster output scanner, waarbij een lichtstraal 15 beeldmatig wordt gemoduleerd en lijnsgewijs over het oppervlak van een lichtgevoelig element wordt afgebogen. Het lichtgevoelig element wordt loodrecht op de afbulgrichting van de lichtstraal voortbewogen teneinde een totaal beeld rastervormig te kunnen schrijven. Een voorbeeld van een rasteroutput scanner is een laserprinter, waarbij een 20 gemoduleerde laserstraal met behulp van een roterende meervlaksspiegel over het oppervlak van een opgeladen fotogeleider wordt voortbewogen. De fotogeleider wordt hierbij beeldmatig uitbelicht, en het verkregen ladingsbeeld kan op bekende wijze met toner worden ontwikkeld, vervolgens overgedragen op een ontvangstblad en met warmte gefixeerd. De 25 front-end controller 10 bevat een 16-bits microprocessorsysteem met -een 68000 microprocessor van Motorola en fungeert in samenwerking met lokale ROM en een deel van een random-acces-geheugen 12 (RAM) als besturingssyteem voor het front-end. In een font-leesgeheugen 13 zijn de bitpatronen van een aantal lettertypen opgeslagen. Het front-end 30 kan via een 1/0 processor 11, welke eveneens een 16-bits micropro- cessorsysteem met een 68000 microprocessor van Motorola bevat, met een schijfgeheugen, werkstation, computer en/of clustercontroller worden verbonden. De FEC 10, 1/0 processor 11, RAM 12 en font-geheugen 13 zijn met elkaar verbonden via een standaard VME-bus 14. Het font-35 geheugen 13 kan ook als RAM worden uitgevoerd of deel uitmaken van SS Ö 3 4 S t r * * -4- RAM12. Vanuit een schijvengeheugen of floppy-diskgeheugen worden de bitpatronen van de fonts dan in dit RAM geladen.Fig. 1 is a schematic representation of a front-end system. Herein a front-end controller 10 (FEC) is connected to an operating console 19 and also to the operating system of a printer 20. Printer 20 is a raster output scanner, in which a light beam 15 is modulated imagewise and linewise over the surface of a photosensitive element is deflected. The photosensitive element is moved perpendicular to the deflection direction of the light beam in order to write an overall image in raster form. An example of a raster output scanner is a laser printer, in which a modulated laser beam is advanced over the surface of a charged photoconductor using a rotating multi-surface mirror. The photoconductor is hereby image-wise exposed, and the resulting charge image can be developed in known manner with toner, then transferred to a receiving sheet and heat-set. The front-end controller 10 includes a 16-bit microprocessor system with a Motorola 68000 microprocessor and acts in conjunction with local ROM and part of a random access memory 12 (RAM) as the operating system for the front-end. The bit patterns of a number of fonts are stored in a font reading memory 13. The front-end 30 can be connected to a disk memory, workstation, computer and / or cluster controller via a 1/0 processor 11, which also includes a 16-bit microprocessor system with a Motorola 68000 microprocessor. The FEC 10, 1/0 processor 11, RAM 12 and font memory 13 are interconnected via a standard VME bus 14. The font-35 memory 13 can also be run as RAM or be part of SS Ö 3 4 S tr * * -4- RAM12. The bit patterns of the fonts are then loaded into this RAM from a disk memory or floppy disk memory.

Een raster image processor 15 (RIP) is eveneens met de VME-bus 14 verbonden. Bovendien is de raster image processor 15 via een raster 5 image bus 17 (RI-bus) met een pagina-groot bit-raap geheugen 16, ook raster image memory genoemd (RIM), verbonden. De RIP 15 dient voor het beeldmatig vullen van het bit-map geheugen 16 (RIM) met lettertekens die uit het font-geheugen 13 worden opgehaald en op de juiste plaats in het bit-map geheugen 16 worden weggezet. Bovendien kan de RIP 15 10 grafische informatie uit geheugen 12 ophalen en eveneens op de gewenste plaatsen in het bit-map geheugen 16 wegzetten. Indien het bit-map geheugen 16 is gevuld kan dit weer via de RIP 15 worden uitgelezen, waarbij de uitgelezen gegevens als een seriële pixel-bit stroom via lijn 18 aan de modulator van de laserprinter worden toegevoerd.A raster image processor 15 (RIP) is also connected to the VME bus 14. In addition, the raster image processor 15 is connected via a raster 5 image bus 17 (RI bus) to a page-large bit-turnip memory 16, also called raster image memory (RIM). The RIP 15 serves to image-fill the bit-map memory 16 (RIM) with characters retrieved from the font memory 13 and stored in the correct location in the bit-map memory 16. In addition, the RIP 15 10 can retrieve graphic information from memory 12 and also store it at the desired locations in the bitmap memory 16. If the bit-map memory 16 is filled, it can be read again via the RIP 15, the read data being fed as a serial pixel-bit stream via line 18 to the modulator of the laser printer.

15 Het beeld dat op de fotogeleider wordt geschreven wordt opgebouwd uit pixels van 0,05 x 0,05 mm, zodat voor het afdrukken van een A4 formaat zwart/wit beeld circa 4000 x 6000 pixels nodig zijn. Dientengevolge is bit-map geheugen 16 circa 24 Megabit of 3 Megabyte groot. Bij het uitlezen van het bit-map geheugen 16 is de pixel-bit-20 rate naar de modulator van de laserprinter via lijn 18, circa 2515 The image written on the photoconductor is made up of pixels of 0.05 x 0.05 mm, so that approximately 4000 x 6000 pixels are required to print an A4 size black and white image. As a result, bitmap memory 16 is approximately 24 Megabit or 3 Megabyte in size. When reading the bit-map memory 16, the pixel-bit-20 rate to the modulator of the laser printer via line 18 is approximately 25

Megapixels/sec., zodat een pagina van A4 formaat in circa 1 sec. kan worden geprint.Megapixels / sec., So that a page of A4 size in about 1 sec. can be printed.

Alle gegevens omtrent een af te drukken pagina worden via de 1/0 processor 11 vanaf bijvoorbeeld een werkstation en onder besturing 25 van de FEC 10, in het RAM 12 opgeslagen.All data about a page to be printed is stored in the RAM 12 via the 1/0 processor 11 from, for example, a workstation and under the control 25 of the FEC 10.

Hiertoe staan verschillende mogelijkheden ter beschikking.Various options are available for this.

Uitgaande van bijvoorbeeld een A4 pagina die in de "portretmode” moet worden geprint, worden circa 4000 deeltabellen gemaakt, overeenkomende met de circa 4000 scanlijnen die nodig zijn om een pagina te 30 schrijven. In elke deeltabel worden lettercodes van die lettertekens of grafische tekens opgeslagen die op een bepaalde scanlijn hun startpunt hebben. Elke lettercode bevat bovendien gegevens omtrent de X-positie welke het teken op de scanlijn inneemt, gegevens omtrent het font-type alsmede gegevens omtrent de hoogte en de breedte van een bepaald 35 teken. Ook bevat de lettercode gegevens omtrent een basisadres in het font-geheugen 13, waar de bit-representatie van dit teken in 16-bits woorden is opgeslagen. De verzameling van de aldus gevormde lijsten 8503 461 -5- * '* f wordt de lijst der primitieven genoemd.For example, assuming an A4 page to be printed in "portrait mode", approximately 4000 partial tables are created, corresponding to the approximately 4000 scan lines required to write a page. Each partial table stores letter codes of those characters or graphic characters. that have their starting point on a particular scan line Each letter code also contains information about the X position the character occupies on the scan line, information about the font type as well as information about the height and width of a particular character. letter code data about a base address in the font memory 13, where the bit representation of this character is stored in 16-bit words The set of lists 8503 461 -5- * '* f thus formed is called the list of primitives .

Zijn de gegevens omtrent een af te drukken pagina aldus in het HAM 12 opgeslagen, dan kan gestart worden met het vullen van het bitmap geheugen 16. Daartoe worden de lettercodes uit het RAM 12 één voor 5 een door de RIP 15 opgehaald, en met de bijbehorende bit-representatie uit het font-geheugen 13» geëxpandeerd en op de juiste X en Y-positie in het bit-map geheugen 16 weggezet. Op overeenkomstige wijze worden alle tekens een voor een afgewerkt totdat het bit-map geheugen 16 geheel is gevuld met de pixel-representatie van de af te drukken 10 pagina.If the data about a page to be printed is thus stored in the HAM 12, the bitmap memory 16 can be started for this purpose. To that end, the letter codes from the RAM 12 are retrieved one by 5 by the RIP 15, and with the corresponding bit representation expanded from the font memory 13 and stored in the correct X and Y position in the bit map memory 16. Similarly, all characters are finished one by one until the bitmap memory 16 is completely filled with the pixel representation of the page to be printed.

Het is niet noodzakelijk deze deellijsten te vormen. De gegevens omtrent een af te drukken pagina kunnen ook in een willekeurige volgorde in het RAM 12 worden opgeslagen. Bij het vullen van het bit-mapgeheugen 16 wordt het RAM 12, waarin de primitieven in een wille-15 keurige volgorde zijn geplaatst, achter elkaar uitgelezen, geëxpandeerd en op de bijbehorende plaatsen in het bit-map geheugen 16 geplaatst. Volgens weer een andere mogelijkheid worden alle op een pagina voorkomende tekens slechts één keer opgeslagen en voorzien van gegevens omtrent de verschillende posities die elk teken op de pagina inneemt.It is not necessary to form these partial lists. The data about a page to be printed can also be stored in RAM 12 in any order. When filling the bitmap memory 16, the RAM 12 in which the primitives are arranged in any order is read sequentially, expanded and placed at the corresponding locations in the bitmap memory 16. According to yet another possibility, all characters appearing on a page are stored only once and provided with information about the different positions each character occupies on the page.

20 Zo worden de gegevens omtrent een veel voorkomend teken, zoals bijvoorbeeld de letter e, slechts één keer opgeslagen in het RAM12 en alle posities die deze letter op de pagina inneemt worden in een aparte tabel toegevoegd.For example, information about a common character, such as the letter e, is only stored once in RAM12 and all positions that this letter occupies on the page are added in a separate table.

Gewoonlijk worden eerst de grafische tekens die in het RAM12 of 25 font-geheugen 13 zijn opgeslagen in het bit-map geheugen 16 gezet en daarna pas de lettertekens.Usually, the graphic characters stored in the RAM12 or 25 font memory 13 are first put into the bit-map memory 16 and only then the characters.

De Raster Image ProcessorThe Raster Image Processor

In Fig. 2 zijn de processen weergegeven die door de RIP 15 kunnen worden uitgevoerd. Na het opstarten van het systeem (3tap 24) wordt de 30 RIP 15 gelnitialiseerd (stap 25)(INIT-commando) door een systeemreset of een INIT-commando van de front-end controller 10, waarna het "zelftest” proces (stap 26) wordt gestart. Deze "zelftest" omvat het testen van verschillende RIP functies en bit-map geheugen (RIM) functies. De RIP 15 mag geen toegang tot de VME-bus 14 hebben gedurende de 35 zelftestprocedure, want de FEC 10 heeft de VME-bus 14 nodig voor het testen van het RAM 12 en font-geheugen 13· Wanneer de RIP 15 het "zelftest" programma met succes heeft uitgevoerd, wordt een interrupt 35Ö34S1 • % -6- signaal aan de FEC 10 doorgegeven, en de RIP 15 gaat in de wachtstand (stap 27). Wanneer het zelftestprogramma een fout heeft gedetecteerd gaat de RIP 15 ook in de wachtstand (stand 27), maar er wordt geen interrupt naar de FEC 10 gegenereerd. Op deze wijze weet de front-end 5 controller 10 dat er een fout in de RIP 15 "zelftest" is geconstateerd. Een fout wordt tevens door het oplichten van een LED aan de bedienaar gesignaleerd.In FIG. 2 shows the processes that can be performed by the RIP 15. After system startup (3tap 24), the 30 RIP 15 is initialized (step 25) (INIT command) by a system reset or an INIT command from the front-end controller 10, after which the "self-test" process (step 26 This "self test" includes testing various RIP functions and bitmap memory (RIM) functions. The RIP 15 should not have access to the VME bus 14 during the 35 self test procedure, because the FEC 10 has the VME bus 14 required for testing the RAM 12 and font memory 13 · When the RIP 15 has successfully executed the "self-test" program, an interrupt 35Ö34S1 •% -6 signal is passed to the FEC 10, and the RIP 15 goes on hold (step 27). When the self-test program has detected an error, the RIP 15 also goes on hold (position 27), but no interrupt is generated to the FEC 10. In this way, the front-end 5 controller 10 that an error has been detected in the RIP 15 "self test." An error is also detected by the lighting of an LED signaled to the operator.

Op een "RIP-diagnose" commando van de FEC 10 naar de RIP 15» start het RIP-diagnose proces. De RIP 15 voert een aantal interne 10 testen uit en ook een aantal testen op het RIM 16. De resultaten van deze testen worden opgeslagen in het RAM 12 en kunnen worden doorgegeven aan, en zichtbaar gemaakt op bedieningsconsole 19. Het RIP-diagnose proces test ook de VME-interfaces. Het RIP-diagnose proces heeft een meer uitgebreid karakter, terwijl het zelftest proces een 15 meer functionele hardwaretest uitvoert. Na het beëindigen van het RIP-diagnose proces, slaat de RIP 15 status informatie op in het RAM 12, genereert een interrupt naar de FEC 10 en geeft de VME-bus 14 vrij.On a "RIP diagnosis" command from the FEC 10 to the RIP 15 »the RIP diagnosis process starts. The RIP 15 performs a number of internal 10 tests as well as some tests on the RIM 16. The results of these tests are stored in the RAM 12 and can be passed on to and displayed on the control console 19. The RIP diagnosis process test also the VME interfaces. The RIP diagnosis process is more extensive, while the self-test process performs a more functional hardware test. After finishing the RIP diagnosis process, the RIP 15 stores status information in RAM 12, generates an interrupt to FEC 10 and releases VME bus 14.

Nadat de RIP 15 een "vul bitmap" commando ontvangt van de FEC 10, controleert de RIP 15 het datatransport op de VME-bus 14. De RIP 15 20 krijgt zo toegang tot het RAM 12, welke de primitieven bevat van de pagina die geprint moet worden.After the RIP 15 receives a "fill bitmap" command from the FEC 10, the RIP 15 checks the data transport on the VME bus 14. The RIP 15 20 thus accesses the RAM 12, which contains the primitives of the page being printed must be.

De RIP 15 expandeert de primitievenlijst met behulp van de pixelrepresentaties van de fonts en zet deze weg in het bit-map geheugen 16 (RIM). De RIP 15 heeft toegang tot het RIM 16 via de RI-25 bus 17. Het RIM 16 bevat bovendien modificatie logica, welke de RIP 15 ondersteunt bij het uitvoeren van verschillende rekenkundige bewerkingen op data voor het bit-map geheugen 16, zoals bijvoorbeeld AND-, 0R- en INVERT-operaties. Na het vullen van de bit-map (stap 28), slaat de RIP 15 status informatie· op in het RAM 12, genereert een 30 interrupt naar de FEC 10 en geeft de VME-bus 14 vrij.The RIP 15 expands the primitives list using the pixel representations of the fonts and stores it in the bit-map memory 16 (RIM). The RIP 15 has access to the RIM 16 via the RI-25 bus 17. The RIM 16 also includes modification logic, which supports the RIP 15 in performing various arithmetic operations on data for the bit-map memory 16, such as AND , 0R and INVERT operations. After filling the bit map (step 28), the RIP 15 stores status information in the RAM 12, generates an interrupt to the FEC 10 and releases the VME bus 14.

De FEC 10 genereert vervolgens een "lees bitmap"-commando en de RIP 15 zal wachten op een pagina-synchronisatie signaal dat van de laserprinter afkomstig is via een besturingsinterface. Na deze pagina-synchronisatie start de RIP 15 met het uitlezen van het RIM 16 (stap 35 29) en genereert een seriële pixel-bit-stroom welke via een video interface aan de modulator van de laserprinter wordt toegevoerd. Na het beëindigen van het bit-map leesproces (stap 29) slaat de RIP 15 850 3 46 1 " t * -7- weer status gegevens op in het RAM 12, genereert een interrupt naar de FEC 10 en geeft vervolgens de VME-bus 14 vrij.The FEC 10 then generates a "read bitmap" command and the RIP 15 will wait for a page synchronization signal from the laser printer via a control interface. After this page synchronization, the RIP 15 starts reading the RIM 16 (step 35-29) and generates a serial pixel bit stream which is supplied via a video interface to the modulator of the laser printer. After finishing the bitmap reading process (step 29), the RIP 15 850 3 46 1 "t * -7- again stores status data in the RAM 12, generates an interrupt to the FEC 10 and then returns the VME bus 14 free.

Qe RIP 15 (Fig. 3) is opgebouwd rond een intern bussysteem, de raster image processor bus 46 (RIP-bus), welke een synchrone bus is 5 en ingericht om uitsluitend 16-bits woorden te transporteren. De RIP-bus 46 bevat datalijnen 47, adres- en controlelijnen 48 en con-ditielijnen 49· Via een VME-bus interface 41 is de RIP-bus met de VME-bus 14 verbonden en via een RI-bus interface 45 met de RI-bus 17.The RIP 15 (Fig. 3) is built around an internal bus system, the raster image processor bus 46 (RIP bus), which is a synchronous bus 5 and arranged to transport only 16-bit words. The RIP bus 46 contains data lines 47, address and control lines 48 and connection lines 49 · The RIP bus is connected to the VME bus 14 via a VME bus interface 41 and via a RI bus interface 45 to the RI -bus 17.

Deze RI-bus 17 bevat onder andere data-en adreslijnen 58, een busy-10 lijn 57, een RI-bus-address-available lijn 56, een klok-lijn 54 en modificatielijnen. Bovendien i3 de RIP-bus 46 verbonden met een laserscanmodule interface 44 (LSM-interface) en de eigenlijke Central Processing Unit 43 (CPU) van de RIP 15. Het laserscanmodule LSM-interface 44 is verbonden met lijnen afkomstig van de printer, zoals 15 een «start of scan*’ lijn 52 (SOS), waarover een synchronisatie signaal wordt aangevoerd om het begin van een te printen lijn aan te geven, een burst-lijn 53, waarover een signaal dat overeenkomt met de gewenste pixelfrequentie wordt toegevoerd en een videolijn 18, waarover de seriële pixel-bit-stroom bij het uitlezen van het bit-map 20 geheugen 16 aan de modulator van de laserprinter wordt toegevoerd. De adres- eri controlelijnen 48 en de conditielijnen 49 zijn ook nog met een pagina-synchronisatie interface 42 verbonden. Over lijn 50 wordt . een "page-available” signaal (PAV) aan de besturingsinrichting van de printer toegevoerd, dat aangeeft dat een pagina in het bit-map 25 geheugen 16 volledig is geformateerd en dat de RIP 15 met een "start-of-page" (SOP) via lijn 51, afkomstig van de besturingsinrichting van de printer, aan de uitlezing van het bit-map geheugen 16 kan beginnen.This RI bus 17 includes data and address lines 58, a busy-10 line 57, an RI bus address-available line 56, a clock line 54, and modification lines. In addition, the RIP bus 46 is connected to a laser scan module interface 44 (LSM interface) and the actual Central Processing Unit 43 (CPU) of the RIP 15. The laser scan module LSM interface 44 is connected to lines originating from the printer, such as 15 a "start or scan *" line 52 (SOS), over which a synchronization signal is applied to indicate the beginning of a line to be printed, a burst line 53, over which a signal corresponding to the desired pixel frequency is applied and a video line 18, over which the serial pixel bit stream is applied to the modulator of the laser printer when the bitmap memory 16 is read. The address control lines 48 and the condition lines 49 are also connected to a page synchronization interface 42. About line 50. a "page-available" signal (PAV) is applied to the printer controller indicating that a page in the bit-map 25 memory 16 has been completely formatted and that the RIP 15 has a "start-of-page" (SOP ) the reading of the bit-map memory 16 can commence via line 51, originating from the control device of the printer.

VME-bus interface 30 In Fig. 4 is de VME-bus interface 41 schematisch nader weergege ven. Een master-interface 100, een slave-interface 101 en een interruptor 102 zijn met de VME-bus 14 verbonden. De datalijnen 47 van de RIP-bus 46 zijn met het master-interface 100 verbonden. De adresen controlelijnen 48, evenals de conditielijnen 49 van de RIP-bus 35 46 zijn aangesloten op het master-interface 100, het slave-interface 101 en de interruptor 102. De VME-bus interface 41 heeft als taak om de RIP 15 af te schermen van de a-synchrone VME-bus 14. Het VME- 8503461 -8- master-interface 100 (VME-MI) bevat een intern besturingssysteem waarmee de aanwezig buffers en registers worden gestuurd en via deze interface kunnen accesscycles op de VME-bus 14 worden uitgevoerd. In de besturing is programmeerbare logica toegepast. Ook het slave-5 interface 101 en de interruptor 102 zijn voor de besturing van programmeerbare logica voorzien.VME bus interface 30 In Fig. 4, the VME bus interface 41 is schematically illustrated. A master interface 100, a slave interface 101 and an interruptor 102 are connected to the VME bus 14. The data lines 47 of the RIP bus 46 are connected to the master interface 100. The address control lines 48, as well as the condition lines 49 of the RIP bus 35 46 are connected to the master interface 100, the slave interface 101 and the interruptor 102. The VME bus interface 41 has the task of terminating the RIP 15 asynchronous VME bus screens 14. The VME- 8503461-8 master interface 100 (VME-MI) includes an internal operating system that controls the buffers and registers present and allows access cycles on the VME bus 14 are performed. Programmable logic is applied in the controller. The slave-5 interface 101 and the interruptor 102 are also provided with programmable logic for controlling.

Het VME-MI 100 (Fig. 8) omvat ook data-transfer functies zoals data base-master (DTB master) en data base requestor (DTB requestor). Om de gewenste snelheid in het data transport te bereiken zijn in dit 10 VME-MI 100 enkele extra functies toegevoegd. 'The VME-MI 100 (Fig. 8) also includes data transfer functions such as database master (DTB master) and database requestor (DTB requestor). In order to achieve the desired speed in the data transport, some additional functions have been added in this 10 VME-MI 100. '

De eerste functie is een adres up/down teller, gevormd door een adres-hoog teller 132 en adres-laag teller 133* Bij het laden van het RIM 16 met de bit representaties van de verschillende lettertekens of grafische tekens die elk afzonderlijk met opeenvolgende adressen in 15 het font-geheugen 13 of het RAM 12 zijn opgeslagen, worden de tellers 132 en 133 voor elk teken vóóringesteld met het basisadres van dat teken in bijvoorbeeld het RAM 12. Via buffer 134 en de VME-adresbus 141 van VME-bus 14 wordt dit basisadres aan het RAM 12 toegevoerd, en het eerste 16-bits woord op die betreffende geheugenplaats wordt via 20 de VME-databus 142 van de VME-bus 14 aan een bi-directionele buffer 135 toegevoerd en vervolgens op de juiste plaats in het RIM 16 geplaatst. Het volgende adres voor het RAM 12 wordt gegenereerd door de teller 133 met één te verhogen en het tweede 16-bits woord wordt via het VME-MI 100 aan het RIM 16 toegevoerd. Op overeenkomstige wijze 25 worden alle bij een bepaald teken behorende adressen gegenereerd, net zo lang tot het teken volledig in het RIM 16 is geschreven.The first function is an address up / down counter, formed by an address-high counter 132 and address-low counter 133 * When loading the RIM 16 with the bit representations of the different characters or graphic characters, each with consecutive addresses stored in font memory 13 or RAM 12, counters 132 and 133 for each character are preset with the base address of that character in, for example, RAM 12. Via buffer 134 and VME address bus 141 of VME bus 14 this base address is supplied to the RAM 12, and the first 16-bit word on that particular memory location is supplied through the VME data bus 142 of the VME bus 14 to a bi-directional buffer 135 and then in the correct location in the RIM 16 installed. The next address for the RAM 12 is generated by incrementing the counter 133 by one and the second 16-bit word is supplied to the RIM 16 through the VME-MI 100. Correspondingly, all addresses associated with a particular character are generated until the character is completely written in the RIM 16.

Op deze wijze wordt bereikt dat de CPU 43 per teken slechts één keer een basisadres hoeft te genereren, zodat tijdens het laden andere functies uitgevoerd kunnen worden, bijvoorbeeld pixel bewerkingen, 30 RIM-adres bepaling, enz.In this way it is achieved that the CPU 43 only has to generate a base address once per character, so that during loading other functions can be performed, for instance pixel operations, RIM address determination, etc.

Nadat een teken is afgewerkt, wordt een nieuw basisadres voor een volgend teken aan de tellers 132 en 133 toegevoerd en de bovenbeschreven cyclus wordt herhaald.After a character is completed, a new base address for a subsequent character is supplied to counters 132 and 133 and the above-described cycle is repeated.

De tweede functie, de spiegelfunctie, wordt uitgevoerd met een 35 spiegelschakeling 136, welke is opgebouwd met programmeerbare logica, zoals FPLA1s of PAL’s, en welke kan worden toegepast wanneer tekens 1800 geroteerd in het RIM 16 moeten worden gezet. De spiegelscha- 8503461 * » -9- keling 136 verwisselt van een 16-bits woord bit-0 met bit-15, bit-1 met bit-14, bit-2 met bit-13» enz.The second function, the mirror function, is performed with a mirror circuit 136, which is constructed with programmable logic, such as FPLA1s or PALs, and which can be used when characters 1800 are to be rotated in the RIM 16. The mirror circuitry 8503461 * 9 changes 136 from a 16-bit word bit-0 with bit-15, bit-1 with bit-14, bit-2 with bit-13, etc.

De CPU 43 genereert nu niet het basisadres, maar berekent uit gegevens omtrent lengte en breedte en het basisadres van een teken het 5 hoogst voorkomende adres voor dat bepaalde teken in het RAM 12. Dit hoogste adres wordt in de tellers 132 en 133 geladen terwijl de tellers tevens door VME-MI controller 130 worden omgeschakeld tot down-tellers. Na elk geheugen access van RAM 12 wordt de inhoud van de teller 133 met één verlaagd en de 16-bits woorden uit RAM 12 worden in 10 spiegelschakeling 136 gespiegeld en via het data-in register 137 in het RIM 16 geplaatst. Deze cycli worden voortgezet totdat het oorspronkelijke basisadres van het teken is bereikt.The CPU 43 now does not generate the base address, but calculates from data about length and width and the base address of a character the 5 most common address for that particular character in RAM 12. This highest address is loaded in counters 132 and 133 while the counters are also converted to down-counters by VME-MI controller 130. After each memory access of RAM 12, the contents of the counter 133 are decreased by one and the 16-bit words from RAM 12 are mirrored in mirror circuit 136 and placed in the RIM 16 via the data-in register 137. These cycles continue until the character's original base address is reached.

In het VME-MI 100 is ook een data-uit register 138 via datalijnen 47 met de RIP-bus 46 verbonden, om aldus data naar bijvoorbeeld de FEC 15 10 of naar RAM 12 te voeren.In the VME-MI 100, a data-out register 138 is also connected to the RIP bus 46 via data lines 47, so as to feed data to, for example, the FEC 15 or to RAM 12.

De VME-MI controller 130 is via controlelijnen 48 en conditielijnen 49 met de RIP-bus 46 verbonden en bovendien via een buffer 131 «net adres-, data-, en controlelijnen 139 en bus-arbitragelijnen 140 van de VME-bus 14.The VME-MI controller 130 is connected to the RIP bus 46 via control lines 48 and condition lines 49 and, in addition, via a buffer 131 of the address, data, and control lines 139 and bus arbitration lines 140 of the VME bus 14.

20 De CPU 43 kan verschillende toestanden in het VME-MI 100 aanroepen, zoals "release-bus", "multiple access", "single access" en "change". Voordat de VME-MI 100 in de single-of multiple access toestand kan overgaan, moeten eerst nog de volgende gegevens worden gespecificeerd: lezen of schrijven, normaal of gespiegeld, het 25 gewenste adres en de te verwerken data. Deze specificaties kunnen alleen veranderd worden tijdens de "release-bus" toestand en tijdens "change" toestand. De te verwerken data kan echter steeds worden gewijzigd. Dit wordt ook aangegeven door een "CHANGE ACKNOWLEDGE" lijn. Het register dat de gelezen data van de VME-bus 14 bevat kan 30 steeds worden uitgelezen wanneer een "REGISTER FULL"-lijn actief is.The CPU 43 can call various states in the VME-MI 100, such as "release bus", "multiple access", "single access" and "change". Before the VME-MI 100 can transition to the single- or multiple-access state, the following data must first be specified: read or write, normal or mirrored, the desired address and the data to be processed. These specifications can only be changed during the "release-bus" state and during the "change" state. However, the data to be processed can always be changed. This is also indicated by a "CHANGE ACKNOWLEDGE" line. The register containing the read data from VME bus 14 can be read whenever a "REGISTER FULL" line is active.

Na het aanroepen van een "release-bus" toestand zal de VME-MI 100 de VME-bus 14 vrijgeven. Dit betekent dat de VME-bus drivers gedisabled worden en een BBSY-signaal van de VME-bus inactief wordt gemaakt. Het vrijgeven van de VME-bus 14 kan slechts dan geschieden 35 wanneer de laatste access cycle volledig is afgewerkt. Een "CHANGE ACKN0WLEDGE"-signaal geeft aan dat de "release-bus" toestand is ingetreden. In deze toestand van het interface kan geen access op de 8503461 » 4 -10- VME-bus 14 plaatsvinden. Na een "change" aanvrage wordt het VME-MI 100 geïnstrueerd bezit te nemen van VME-bus 14, indien dit nog niet het geval was. Dit wordt gerealiseerd met de bus-arbitrage lijnen 140. Via de "CHANGE ACKNOWLEDGE"-lijn wordt aangegeven dat de "change" 5 toestand is bereikt. Een access op de VME-bus 14 kan dan plaatsvinden. Ook tijdens de "change" toestand kunnen de inhouden van de adres- en dataregisters worden veranderd. Met "change" wordt een mogelijkheid gegeven om accesses op de VME-bus tijdelijk te stoppen zonder dat de VME-bus wordt vrijgegeven. Een single access op de VME-bus kan gestart 10 worden door het aanroepen van een "single cycle" toestand. Wanneer de voorgaande toestand een "release-bus" toestand was, wordt pas bezit genomen van de VME-bus via een overeenkomstig actief signaal van de arbritrage logica. Hierna kan pas een woord access worden uitgevoerd op de VME-bus.After calling a "release bus" state, the VME-MI 100 will release the VME bus 14. This means that the VME bus drivers are disabled and a BBSY signal from the VME bus is disabled. The release of the VME bus 14 can only take place when the last access cycle has been completely completed. A "CHANGE ACKN0WLEDGE" signal indicates that the "release bus" state has entered. In this state of the interface, access to the 8503461 »4 -10 VME bus 14 cannot take place. After a "change" application, the VME-MI 100 is instructed to take possession of VME bus 14, if not already. This is accomplished with the bus arbitration lines 140. The "CHANGE ACKNOWLEDGE" line indicates that the "change" state has been reached. An access to the VME bus 14 can then take place. The contents of the address and data registers can also be changed during the "change" situation. Change provides an option to temporarily stop accesses on the VME bus without releasing the VME bus. A single access on the VME bus can be started by calling a "single cycle" state. When the previous state was a "release bus" state, the VME bus is only taken over via a corresponding active signal from the arbitration logic. After this, a word access can only be performed on the VME bus.

15 Een lees/schrijf indicator beslist of een lees- of een schrijf- cyclus moet worden uitgevoerd.15 A read / write indicator decides whether to perform a read or write cycle.

Een leescyclus betekent dat data van de VME-bus 14 worden ingeklokt in het data-in register 137 via de spiegelschakeling 136» welke laatste geactiveerd kan worden met behulp van een 20 normaal/gespiegeld indicator. Wanneer data in het data-in register 137 worden ingeklokt, wordt een REGISTER-FULL vlag gezet om aan CPU 43 te signaleren dat de transfer van data is afgelopen en dat de data zijn binnengekomen in het genoemde register. De REGISTER-FULL vlag wordt gezet op het moment dat de data in het data-in register 137 worden 25 gelezen en na deze access wordt de inhoud van de adresteller met één verhoogd. In het geval van een enabled spiegelfunctie, wordt de inhoud van de adresteller met één verlaagd. Wanneer de REGISTER-FULL vlag nog is geactiveerd en data worden gelezen van de VME-bus, wordt de normale VME-cyclus verlengd totdat het data-in register 137 geheel is uitgele-30 zen en nieuwe data in het data-in register 137 zijn ingelezen.A read cycle means that data from the VME bus 14 is clocked into the data-in register 137 via the mirror circuit 136, the latter of which can be activated using a normal / mirrored indicator. When data is clocked into the data-in register 137, a REGISTER-FULL flag is set to signal to CPU 43 that the data transfer has ended and that the data has entered the said register. The REGISTER-FULL flag is set when the data in the data-in register 137 is read and after this access the content of the address counter is increased by one. In the case of an enabled mirroring function, the content of the address counter is decreased by one. When the REGISTER-FULL flag is still activated and data is being read from the VME bus, the normal VME cycle is extended until the data-in register 137 is fully read and new data is entered in the data-in register 137 read in.

Een schrijfcyclus is in principe hetzelfde als een leescyclus. Het enige verschil is de richting van de datastroom. In een schrijf-cyclus worden de data, welke zich in het data-uit register 138 bevinden, getransporteerd naar de VME-bus 14. De spiegelschakeling 136 35 verandert niets aan de geschreven data. Het data-in register 137 moet al reeds gelezen zijn om de REGISTER-FULL vlag te kunnen clearen.A write cycle is basically the same as a read cycle. The only difference is the direction of the data flow. In a write cycle, the data contained in the data-out register 138 is transported to the VME bus 14. The mirror circuit 136 does not change the written data. The data-in register 137 must already have been read in order to clear the REGISTER-FULL flag.

De "multiple access" toestand vertoont veel overeenkomsten met de 85 0 3 4 6 1The "multiple access" state is very similar to the 85 0 3 4 6 1

* V* V

-11- "single access” toestand. Een "single-access” is bedoeld voor het lezen en schrijven van commando’s van, en status informatie naar de FEC. Een "multiple access" is vooral bedoeld voor het lezen van grafische- en font-data, waarbij door het VME-MI 100 automatisch een 5 volgende access wordt gestart. Het nieuwe adres wordt gegenereerd door de adresteller. De enige actie die hierbij uitgevoerd moet worden is het lezen van het data-in register 137.-11- "single access" state. A "single-access" is intended for reading and writing commands from, and status information to, the FEC. A "multiple access" is mainly intended for reading graphic and font data, whereby the VME-MI 100 automatically starts a next access. The new address is generated by the address counter. The only action to be taken here is to read the data-in register 137.

De hiervoor beschreven verschillende toestanden worden geselecteerd met de VME-MODE lijnen welke verbonden zijn met enkele 10 signaallijnen van de CPU 43. De lees/schrijfselector en de normaal/gespiegeld selector zijn eveneens verbonden met dergelijke signaallijnen. De CHANGE-ACKNOWLEDGE en VME-Register-Full signalen zijn afkomstig van de WAIT-lijnen van de CPU 43. Het VME adres wordt opgeslagen in 24-bit tellers132 en 133» de input- en output-data in 15 twee 16-bit registers 137 en 138. "Adres-hoog"- en "adres-laag" van tellers 132 en 133 en het data-out register 138 worden geladen met behulp van register-kloklijnen. Het data-in register 137 kan gelezen worden met behulp van een register enable lijn afkomstig van de CPU 43- 20 Het LSM-interfaceThe various states described above are selected with the VME-MODE lines which are connected to some 10 signal lines of the CPU 43. The read / write selector and the normal / mirrored selector are also connected to such signal lines. The CHANGE-ACKNOWLEDGE and VME-Register-Full signals come from the WAIT lines of the CPU 43. The VME address is stored in 24-bit counters 132 and 133 »the input and output data in 15 two 16-bit registers 137 and 138. "Address high" and "address low" of counters 132 and 133 and the data-out register 138 are loaded using register clock lines. The data-in register 137 can be read using a register enable line from the CPU 43-20 The LSM interface

In Fig. 5 is het LSM-interface 44 nader schematisch weergegeven.In FIG. 5, the LSM interface 44 is further schematically shown.

Bij het uitlezen van het RIM 16 haalt de RIP 15 een 16-bits woord uit dit geheugen op en geeft dit via datalijnen 47 van de RIP-bus 46 door aan register 111. Het besturingsblok 110 geeft over lijn 115 een 25 "load"-signaal af aan schuifregister 112 en de inhoud van register 111 wordt parallel in het schuifregister 112 geladen. De laserprinter geeft burst-pulsen af met een frequentie van circa 24 MHz, die over lijn 53 en via 1/0 buffer 113 aan het schuifregister 112 en het besturingsblok 110 worden toegevoerd. Met deze pulsen wordt de inhoud 30 van het schuifregister 112 serieel uitgeschoven en via I/O buffer 113 over lijn 18 aan de modulator van de ROS toegevoerd.When the RIM 16 is read out, the RIP 15 retrieves a 16-bit word from this memory and passes it via data lines 47 from the RIP bus 46 to register 111. The control block 110 gives a "load" over line 115 - signal to shift register 112 and the contents of register 111 are loaded parallel to the shift register 112. The laser printer delivers burst pulses at a frequency of about 24 MHz, which are applied over line 53 and through 1/0 buffer 113 to the shift register 112 and the control block 110. With these pulses, the content of the shift register 112 is serially extended and is fed via line I / O buffer 113 over line 18 to the modulator of the ROS.

De burst-pulsen worden in het besturingsblok 110 aan een 16-teller toegevoerd en wanneer 15 pulsen zijn geteld of tijdens de 16e telpuls, wordt een inmiddels nieuw in register 111 gezet woord, 35 parallel aan schuifregister 112 doorgegeven en uitgeschoven. Vóór de uitschuifoperatie van dit 16-bits woord start, wordt het register 111 geladen met een nieuw 16-bits woord. Er wordt een "EMPTY"-vlag gezet 8503 4Si -12- , J> » wanneer data in het schuifregister 112 zijn gezet en nieuwe data in het register 111 mogen worden geschreven. De "EMPTY”-vlag is aangesloten op een "wachtlijn” van de CPU 43 van de RIP 15. Op deze wijze wordt achtereenvolgens een hele scanlijn aan de ROS doorgegeven. Het 5 besturingsblok 110 geeft conditiesignalen af aan de CPU 43 over con-ditielijnen 49 van de RIP-bus 46. Nadat een scanlijn is afgewerkt en vóór een SOS-signaal via lijn 52 vanaf de ROS aan het besturingsblok 110 wordt toegevoerd, wordt het ophalen van data uit het RIM 16 door de RIP 15 even gestaakt (wait-conditie). Gedurende deze tijd wordt het 10 register 111 gecleared via lijn 114. Op het SOS-signaal wordt de eerder beschreven cyclus van vullen van register 111, doorgeven aan schuifregister 112, uitschuiven enz., weer voor een volgende scanlijn herhaald. Na het laden van een woord in register 111 wordt de "full” status eveneens via conditielijnen 49 aan de CPU 43 doorgegeven, 15 waarbij deze met het ophalen van een nieuw woord wacht totdat de inhoud van het register 111 weer in het schuifregister 112 geladen is. Met behulp van een teller in de CPU 43 wordt na een PAV-signaal het aantal SOS-pulsen geteld, en hiermee kan worden vastgesteld wanneer een pagina volledig aan de ROS is doorgegeven.The burst pulses are applied to a 16 counter in the control block 110, and when 15 pulses are counted or during the 16th count pulse, a now new word entered in register 111, 35 is passed parallel to shift register 112 and extended. Before the extend operation of this 16-bit word starts, the register 111 is loaded with a new 16-bit word. An "EMPTY" flag is set 8503 4Si -12-, J> »when data is put in shift register 112 and new data is allowed to be written in register 111. The "EMPTY" flag is connected to a "waiting line" of the CPU 43 of the RIP 15. In this way, an entire scan line is successively passed to the ROS. The control block 110 outputs condition signals to the CPU 43 over the conductor lines 49 of the RIP bus 46. After a scan line has been completed and before an SOS signal is supplied via line 52 from the ROS to the control block 110, the retrieval is of data from the RIM 16 stopped by the RIP 15 (wait condition). During this time, register 111 is cleared via line 114. On the SOS signal, the previously described cycle of filling register 111, passing to shift register 112, scrolling out, etc., is repeated for a next scan line. After loading a word in register 111, the "full" status is also passed via condition lines 49 to the CPU 43, where it waits to retrieve a new word until the contents of the register 111 have been loaded back into the shift register 112. Using a counter in the CPU 43, after a PAV signal, the number of SOS pulses is counted, and it can be used to determine when a page has been completely passed to the ROS.

20 De Central Processing Unit20 The Central Processing Unit

In Fig. 6 is de CPU 43 van de RIP 15 nader schematisch weergegeven. Deze CPU is opgebouwd rond een microprogrammeerbare microprocessor, processor 74, type Am2911ö, en een bijbehorende address sequencer 70, type 2910A, beide van Advanced Micro Devices.In FIG. 6, the CPU 43 of the RIP 15 is further schematically shown. This CPU is built around a microprogrammable microprocessor, processor 74, type Am2911ö, and an associated address sequencer 70, type 2910A, both from Advanced Micro Devices.

25 Op elke klokcyclus wordt de microinstructie die moet worden uitgevoerd in het micro-instructieregister 72 gezet. Deze microinstructie is afkomstig van de micro-PROM 71 en deze wordt weer geadresseerd met behulp van de address sequencer 70. Elke functie in de processor 74 wordt bestuurd door een deel van de micro-instructie-30 bits. Deze micro-instructies kunnen worden verdeeld in bits voor de address sequencer 70, de processor 74, de sprong-adres besturingseenheid 79» de conditieselector 75, de wachtselector 77 en de enables 78.On each clock cycle, the microinstruction to be executed is placed in the microinstruction register 72. This microinstruction comes from the micro-PROM 71 and is again addressed using the address sequencer 70. Each function in the processor 74 is controlled by part of the microinstruction 30 bits. These micro-instructions can be divided into bits for the address sequencer 70, the processor 74, the jump address control unit 79, the condition selector 75, the waiting selector 77 and the enable 78.

De volgorde van uitvoering van de micro-instructies die zijn 35 opgeslagen in de micro-PROM 71» wordt eveneens gestuurd door de address sequencer 70. Naast de mogelijkheid van opeenvolgende toegang tot de adressen, kunnen ook conditionele spronginstructies naar elke 8503 46 1 -13- micro-instructie in het 4096 grote micro-woordbereik van de micro-PROM 71 worden uitgevoerd. Een LIFO-stack voorziet in een micro-subroutine-return-koppeling en inlusmogelijkheden. De stack is negen stappen diep. Voor elke micro-instructie voorziet de address sequencer 5 70 in een 12-bits adres dat wordt geïnitieerd vanuit een van de vier navolgende bronnen: - het micro-programma-adresregister (PC), welk gewoonlijk een adres aangeeft met een adresverhoging van één, ten opzichte van het in behandeling zijnde adres. Echter, wanneer een "wacht" toestand wordt 10 gegenereerd door wacht-selector 77, wordt de PC niet verhoogd.The order of execution of the micro-instructions stored in the micro-PROM 71 »is also controlled by the address sequencer 70. In addition to the possibility of sequential access to the addresses, conditional jump instructions can also be sent to any 8503 46 1 -13 - microinstruction is executed in the 4096 large micro word range of the micro-PROM 71. A LIFO stack provides a micro-subroutine return link and looping capabilities. The stack is nine steps deep. For each microinstruction, the address sequencer 570 provides a 12-bit address initiated from one of the four following sources: - the microprogram address register (PC), which usually indicates an address with an address increment of one, relative to the pending address. However, when a "wait" state is generated by wait selector 77, the PC is not incremented.

- een externe ingang, aangesloten op lijnen 92, die zijn data krijgt van het sprong-adres besturingseenheid 79.an external input, connected to lines 92, which receives its data from the jump address control unit 79.

- een negen stappen diepe LIFO-stack, welke tijdens een voorafgaande micro-instructie wordt geladen met de inhoud van het micro- 15 programma-adresregister (PC).- a nine-step LIFO stack, which is loaded with the contents of the micro program address register (PC) during a previous microinstruction.

- een register/teller, welke de data die gedurende een voorafgaande micro-instructie vanaf een externe ingang zijn geladen, vasthoudt.a register / counter, which retains the data loaded from an external input during a previous microinstruction.

De processor 74 is een microprogrammeerbare 16-bit microprocessor, type Am 29116, met een instructieset die geoptimaliseerd is 20 voor grafische toepassingen. De instructieset voor de processor 74 omvat met name single and double operand, rotate-n-bits en rotate & merge.The processor 74 is a microprogrammable 16-bit microprocessor, type Am 29116, with an instruction set optimized for graphics applications. Specifically, the instruction set for processor 74 includes single and double operand, rotate-n-bits and rotate & merge.

De processor 74 ontvangt zijn instructies voor het uitvoeren van een operatie van het micro-instructieregister 72 via bus 83 en een 25 instructie-modificatieschakeling 73.The processor 74 receives its instructions for performing an operation from the microinstruction register 72 through bus 83 and an instruction modification circuit 73.

De instructie-ingang wordt ook als data-Ingang toegepast voor "immediate"-instructies. Wanneer de "instructie-enable" (IEH) ingang van de processor 74 via lijn 9¾ wordt geactiveerd, worden de resultaten van de uitgevoerde instructie in de accumulator en het status-30 register in de processor 74 vastgehouden. Wanneer een "output enable" (0E) via lijn 95 wordt geactiveerd, worden de datalijnen van de CPU 43 geschakeld als uitgangen en ze bevatten de inhoud van de ALU van processor 74. Omgekeerd, wanneer via lijn 95 de "output enable" inactief wordt gemaakt, fungeert de databus van de CPU 43 als 16-bits ingang, 35 en kunnen gegevens welke op de RIP-bus aanwezig zijn via datalijnen 47 aan de processor 74 worden toegevoerd. Deze gegevens kunnen dan in een intern register worden vastgehouden. De databus van de processor 74 is 8503461 -14- rechtstreeks met de datalijnen 47 van de RIP-bus verbonden.The instruction entry is also used as a data entry for "immediate" statements. When the "instruction enable" (IEH) input of the processor 74 is activated through line 9¾, the results of the executed instruction are held in the accumulator and the status register in the processor 74. When an "output enable" (0E) is activated via line 95, the data lines of the CPU 43 are switched as outputs and contain the content of the ALU of processor 74. Conversely, when the "output enable" via line 95 becomes inactive The data bus of the CPU 43 functions as a 16-bit input, 35 and data present on the RIP bus can be fed via data lines 47 to the processor 74. This data can then be kept in an internal register. The data bus of the processor 74 is directly connected to the data lines 47 of the RIP bus 8503461-14.

Op de "status bus" 87 van de processor 74 is tijdens elke cyclus de status van de ALÜ beschikbaar (bijvoorbeeld carry, negatief, nul, overflow). De instructie-modificatieschakeling 73 maakt het mogelijk 5 om de in de micro-PROM 71 vastgelegde instructies aan te passen om bij instructies, zoals bijvoorbeeld "rotate n-bits", het aantal bits aan te geven waarmee moet worden geroteerd. Dit aantal bits wordt dan gespecificeerd via een aantal lijnen (91) van de processor-datalijnen 47» 10 Wanneer een IEN signaal op de lijn 94 de instructie input van de processor 74 inactief maakt, kunnen dezelfde processor-instructie-bits die op bus 83 aan de processor 74 worden toegevoerd, via bus 84 ook aan de sprong-adres besturingseenheid 79 worden toegevoerd, en zo worden gebruikt om de address sequencer 70 naar een willekeurig ander 15 adres te laten springen. Normaliter ontvangt de eenheid 79 zijn sprongadres uit de inhoud van een register dat via bus 90 met data van datalijnen 47 is gevuld.On the "status bus" 87 of the processor 74, the status of the AL0 is available during each cycle (e.g. carry, negative, zero, overflow). The instruction modification circuit 73 allows the instructions recorded in the micro-PROM 71 to be adapted to indicate the number of bits to be rotated with instructions, such as, for example, "rotate n-bits". This number of bits is then specified over a number of lines (91) of the processor data lines 47. When an IEN signal on line 94 renders the instruction input of processor 74 inactive, the same processor instruction bits on bus 83 to the processor 74, also to the jump address control unit 79 via bus 84, and thus be used to jump the address sequencer 70 to any other address. Normally, the unit 79 receives its jump address from the contents of a register which is filled via bus 90 with data from data lines 47.

De conditieselector 75 bevat een één-uit-acht multiplexer, en de uitgang hiervan is via lijn 89 met de address sequencer 70 verbonden. 20 Eén van de acht mogelijke condities, welke van de conditielijnen 49 van de RIP-bus, of van de processor-status lijnen 87, via status buffer 76 en lijnen 88 aan de ingang van de conditieselector 75 worden aangelegd, kan worden gekozen. De geselecteerde conditie wordt gebruikt door de adress sequencer 70 om de gewenste conditionele 25 instructie uit te voeren. Eventuele nieuwe condities kunnen in de statusbuffer 76 worden geladen door een selectie-enable signaal (SLE) via lijnen 85 aan de status buffer 76 toe te voeren.Condition selector 75 includes a one-out-eight multiplexer, the output of which is connected via line 89 to address sequencer 70. One of the eight possible conditions, which of the condition lines 49 of the RIP bus, or of the processor status lines 87, are applied via status buffer 76 and lines 88 at the input of the condition selector 75, can be selected. The selected condition is used by the address sequencer 70 to execute the desired conditional instruction. Any new conditions can be loaded into the status buffer 76 by applying a selection enable signal (SLE) via lines 85 to the status buffer 76.

De "wachtselector" 77 bevat eveneens een één-uit-acht multiplexer, welke in actieve toestand één van de acht "wacht"-lijnen 30 97 via lijn 93 met de address sequencer 70 verbindt. Een nul-niveau op een wachtlijn stopt de programmateller van het programma-adres-register. De wachtlijnen zijn verbonden met de conditielijnen van de RIP-bus.The "waiting selector" 77 also includes a one-of-eight multiplexer, which in active condition connects one of the eight "waiting" lines 97 through line 93 to the address sequencer 70. A zero level on a queue stops the program counter from the program address register. The waiting lines are connected to the condition lines of the RIP bus.

Het enable blok 78 heeft verschillende functies en genereert 35 bovendien alle signalen die nodig zijn voor de besturingslijnen op de RIP-bus. Het voert drie verschillende functies uit: A. Het genereren van "enables".The enable block 78 has various functions and additionally generates all the signals required for the control lines on the RIP bus. It performs three different functions: A. Generating "enables".

850 3 46 1 * \ -15-850 3 46 1 * \ -15-

De enable signalen bepalen welke van de data registers die met hun uitgangen aan de RIP-bus zijn verbonden moeten worden geactiveerd.The enable signals determine which of the data registers connected to the RIP bus with their outputs must be activated.

Voor elk register is één enable lijn voorhanden.One enable line is available for each register.

B. Het opwekken van registerklokken.B. Generating register clocks.

5 De kloklijnen bepalen welke dataregisters die met hun ingangen aan de RIP-bus zijn aangesloten, data moeten inklokken. Er is voor elk register één kloklijn aanwezig.5 The clock lines determine which data registers connected to the RIP bus with their inputs should clock in. There is one clock line for each register.

C. Het opwekken van andere signalen.C. Generating other signals.

De signalen op de signaallijnen worden gebruikt als flags en func-10 tieselectoren op de interface modulen die met de RIP-bus zijn verbonden.The signals on the signal lines are used as flags and function selectors on the interface modules connected to the RIP bus.

Raster Image bus interfaceRaster Image bus interface

De verbinding tussen de RIP-bus 46 en de RI-bus 17 wordt gevormd door het RI-bus interface 45 (Fig. 7). Deze interface buffert de bi-15 directionele data, de aan te roepen adressen en de modificatiecode.The connection between the RIP bus 46 and the RI bus 17 is formed by the RI bus interface 45 (Fig. 7). This interface buffers the bi-15 directional data, the addresses to be called and the modification code.

Het bufferen wordt uitgevoerd met behulp van registers. De registers "data-uit" 120, "adres-laag” 122, "adres-hoog" 123 en het modifica-tieregister 124 kunnen geladen worden vanuit de RIP-bus 46. Het laden gebeurt onder besturing van adres- en controlelijnen 48 van het enable 20 blok 78 van de CPU 43. Het "data-in" register 121 kan uitgelezen worden onder invloed van besturing met een enable lijn van het enable blok 78. Het "adres-hoog" register 123 bevat de meest significante bits van het adres. Het "adres-laag" register 122 bevat de minst significante bits. Na het laden van het "adres-hoog" register 123 25 wordt de RI-bus lees/schrijfcyclus automatisch gestart. Dit betekent dat de volgende processen door de controller 125 worden uitgevoerd: cyclus 1- zet een adres op de RI-bus en activeert RAV, cyclus 2- zet data-uit op de RI-bus en inactiveert RAV, cyclus 3- leest de data op de RI-bus in het "data-in" register 121.Buffering is performed using registers. The registers "data-out" 120, "address-low" 122, "address-high" 123 and the modification register 124 can be loaded from the RIP bus 46. Loading is done under the control of address and control lines 48 of the enable 20 block 78 of the CPU 43. The "data-in" register 121 can be read under the influence of an enable line control of the enable block 78. The "address-high" register 123 contains the most significant bits of the address The "address low" register 122 contains the least significant bits. After loading the "address high" register 123 25, the RI bus read / write cycle is automatically started, this means that the following processes by the controller 125 are executed: cycle 1 puts an address on the RI bus and activates RAV, cycle 2 turns data-off on the RI bus and deactivates RAV, cycle 3- reads the data on the RI bus in the "data- in "register 121.

30 Vóór het starten van een RI-bus cyclus, moet de CPU 43 testen of de RI-bus-busy-lijn 57 inactief is. Deze busy-lijn 57 is verbonden met een van de wachtlijnen van de CPU 43.30 Before starting an RI bus cycle, the CPU 43 must test whether the RI bus busy line 57 is idle. This busy line 57 is connected to one of the waiting lines of the CPU 43.

De Raster Image bus (RI-bus)The Raster Image bus (RI bus)

De RI-bus 17 verbindt de RIP 15 met het bit-map geheugen 16 35 (RIM) en is opgebouwd uit 64 lijnen. Het omvat een 32-bits brede gemultiplexte adres/data-bus. Op de RI-bus 17 fungeert de RIP 15 als master. Het RIM 16, dat een of meer RIM borden omvat neemt zelf geen 8503 4 l .The RI bus 17 connects the RIP 15 to the bit-map memory 16 (RIM) and is made up of 64 lines. It includes a 32-bit wide multiplexed address / data bus. On RI bus 17, RIP 15 acts as master. The RIM 16, which comprises one or more RIM boards, does not itself take 8503 4 l.

-16- initiatief op de bus. Verder kunnen op de RI-bus 17 nog RI-bus-DMA devices aangesloten worden, die bij de RIP 15 een verzoek in kunnen dienen om beschikking te krijgen over de bus.-16- initiative on the bus. In addition, RI bus DMA devices can be connected to the RI bus 17, which can submit a request to the RIP 15 to obtain access to the bus.

De RI-bus 17 is een synchrone bus. Door de RIP 15 wordt een 5 kloksignaal (BCLK) aan de RI-bus aangeboden. Alle acties op de bus worden op de flanken van de bifase klok uitgevoerd. Zo vinden alle akties van de RIP op de opgaande flank, en alle akties van het RIM op de neergaande flank van het kloksignaal (BCLK) plaats. De overige toestanden op de RI-bus 17 kunnen beschreven worden met behulp van 10 drie signaalniveau’s, hoog, laag en hoog-impedant (tri-state). Alle veranderingen in signaalniveau’s vinden plaats nadat ze zijn ingeleid door een actieve flank van de bifase klok. Er zijn aldus drie groepen signalen: de kloksignalen, de adres/data signalen en de overige signalen.The RI bus 17 is a synchronous bus. RIP 15 provides a 5 clock signal (BCLK) to the RI bus. All actions on the bus are performed on the sides of the bi-phase clock. Thus, all actions of the RIP on the rising edge, and all actions of the RIM on the falling edge of the clock signal (BCLK) take place. The other states on RI bus 17 can be described using three signal levels, high, low and high impedance (tri-state). All changes in signal levels occur after they are initiated by an active edge of the bi-phase clock. There are thus three groups of signals: the clock signals, the address / data signals and the other signals.

15 De signalen die op de bus voorkomen zijn hierna gedefinieerd: - BCLK: dit is een symmetrische klok, die door de RIP op de RI-bus wordt aangeboden.The signals that occur on the bus are defined below: - BCLK: this is a symmetrical clock, which is offered by the RIP on the RI bus.

- RAD 00 .. RAD 31 (RIP adres/data lijnen): dit is een gemultiplexed adres/data pad, dat door alle bus-devices aangestuurd wordt met 20 tri-state drivers. Alle lijnen zijn "hoog" actief.- RAD 00 .. RAD 31 (RIP address / data lines): this is a multiplexed address / data path, which is controlled by all bus devices with 20 tri-state drivers. All lines are active "high".

- RMC 0 .. RMC 3 (RIM modify code): op deze lijnen wordt door de RIP of een DMA device een code aangeboden aan het RIM bord. Deze code specificeert de "modify" functie die plaats vindt tijdens de logische operatie die op het RIM bord wordt uitgevoerd op de inhoud 25 van het geadresseerde geheugenwoord. Ook deze signalen zijn tri-state uitgevoerd.- RMC 0 .. RMC 3 (RIM modify code): on these lines, a code is offered by the RIP or a DMA device to the RIM board. This code specifies the "modify" function that takes place during the logical operation performed on the RIM board on the content of the addressed memory word. These signals are also tri-state.

- RROFF (RI-bus refresh-off): met dit signaal wordt aangegeven dat de RIM borden de refresh uit kunnen schakelen om een minimale cyclustijd te kunnen halen. Om verlies van data te voorkomen wordt 30 een speciale adresseringsvolgorde tussen de RIM borden en de RIP aangehouden.- RROFF (RI-bus refresh-off): this signal indicates that the RIM boards can switch off the refresh in order to achieve a minimum cycle time. To prevent loss of data, a special addressing sequence is maintained between the RIM boards and the RIP.

- RBR 0, RBR 1 (RI-bus bus-request): met deze open collector signalen kunnen twee DMA devices aan de bus-arbiter om toegang tot de bus vragen. De devices hebben een verschillende prioriteit.- RBR 0, RBR 1 (RI bus bus request): With these open collector signals, two DMA devices can request the bus arbitrator to access the bus. The devices have different priorities.

35 - RBG (RI-bus bus-grant): met deze lijn geeft de bus-arbiter aan dat de bus beschikbaar is voor het aanvragend device met de hoogste prioriteit.35 - RBG (RI-bus bus grant): with this line, the bus arbitrator indicates that the bus is available for the highest priority requesting device.

8503461 -17- - RBUSY (Rl-bus bus-busy): met dit open collector signaal kan een geadresseerd RIM bord aangegeven, dat het bord gedurende een bepaalde tijd niet in staat is om een nieuwe buscyclus te verwerken.8503461 -17- - RBUSY (Rl-bus bus-busy): with this open collector signal, an addressed RIM board can indicate that the board is unable to process a new bus cycle for a certain period of time.

5 - RAV (RI-bus address valid): dit tri-state signaal dat laag actief is, geeft aan dat op de Rl-bus een geldig adres staat.5 - RAV (RI bus address valid): This tri-state signal, which is low active, indicates that the Rl bus has a valid address.

De Rl-bus is uitgevoerd met een 32 bits breed data- en adres-pad dat gemultiplexed wordt op RAD 00 .. RAD 31. De toewijzing van deze lijnen is als volgt: 10 A 24 - D 16 : in deze situatie worden de adreslijnen RA00 .. RA23 gebruikt. De lijnen RAD 24 .. RAD 31 zijn dan don’t care. Voor de' datalijnen wordt RAD00 .. RAD15 gebruikt. De lijnen RAD16 .. RAD31 zijn op dat moment don’t care. Datatransport vindt zo op basis van 16-bits woorden plaats en de adressen zijn 24-bits breed.The R1 bus is provided with a 32 bit wide data and address path which is multiplexed on RAD 00 .. RAD 31. The assignment of these lines is as follows: 10 A 24 - D 16: in this situation the address lines are RA00 .. RA23 used. The lines RAD 24 .. RAD 31 are then not care. For the data lines, RAD00 .. RAD15 is used. The lines RAD16 .. RAD31 are not care at the time. Data transport thus takes place on the basis of 16-bit words and the addresses are 24-bit wide.

15 Een andere mogelijkheid om de 32 data- en adreslijnen te gebruiken is: A24 - D16 - D16: Deze situatie is hetzelfde als de A24 - D16 situatie voor wat betreft de adreslijnen. Door het toevoegen van een tweede bord in dezelfde adresruimte, waarbij de data via de lijnen RAD16 ..15 Another possibility to use the 32 data and address lines is: A24 - D16 - D16: This situation is the same as the A24 - D16 situation regarding the address lines. By adding a second sign in the same address space, taking the data via the lines RAD16 ..

20 RAD31 over de bus lopen, kan met twee borden die intern 16-bits breed zijn, een 32-bits brede databus gecreëerd worden. Op een RIM-bord kan ingesteld worden over welk gedeelte van de adres/databus de data getransporteerd worden.20 RAD31 on the bus, a two-bit data bus can be created with two boards that are internally 16-bit wide. On a RIM board it can be set over which part of the address / data bus the data is transported.

Met behulp van de signalen RBRO, RBR1 en RBG wordt de toegang tot 25 de Rl-bus geregeld tussen de RIP en eventuele DMA devices. Deze arbitrage gaat volledig buiten het RIM 16 om.With the aid of the signals RBRO, RBR1 and RBG, access to the R1 bus is controlled between the RIP and any DMA devices. This arbitration is entirely outside RIM 16.

Iedere cyclus op de bus bestaat uit een WRITE/READ cyclus. Indien de bus vrij is (RBUSY niet actief) kan de RIP een adres (ADR£nJ) op de bus op lijnen (RAD00 .. RAD23) zetten. Dit gebeurt samen met het aan-30 bieden van een RAV-signaal en een RI-bus modify code (RMcode) via lijnen RMC00 .. RMC03· Na het adres biedt de RIP zijn data (DATAOjnJ) aan op de bus op lijnen (RAD00 .. RAD15).Each cycle on the bus consists of a WRITE / READ cycle. If the bus is free (RBUSY not active), the RIP can put an address (ADR £ nJ) on the bus on lines (RAD00 .. RAD23). This is done together with the provision of a RAV signal and an RI bus modify code (RMcode) via lines RMC00 .. RMC03 · After the address, the RIP offers its data (DATAOjnJ) on the bus on lines (RAD00 .. RAD15).

Het door ADRfnJ geadresseerde RIM-bord maakt het RBUSY signaal actief. Vervolgens gaat de RIP van de Rl-bus af om het door ADRfn-13 35 geadresseerde RIMbord de mogelijkheid te geven DATAI £n_-|j op bug zetten, zodat de RIP deze data kan inlezen. Twee opeenvolgende WRITE/READ cycli worden hierdoor als het ware in elkaar geschoven. Dit 8503461 -18- wordt nog verder geoptimaliseerd door de tijd, die de RIP nodig heeft om te beslissen of RBUSY inactief is geworden, samen te laten vallen met de laatste verwerkingsfase van het door ADRfriJ geadresseerde RIMbord in de lopende cyclus. Dit is gerealiseerd doordat het RIMbord 5 RBUSY al inactief maakt, voordat het RIMbord al helemaal gereed is maar waarbij al zeker vast staat dat dit gereed zal zijn wanneer de RIP dit geconstateerd kan hebben. De eerste cyclus bevat dus ongeldige data en er is tevens een extra cyclus nodig om de laatste data uit het RIM op te halen.The RIM board addressed by ADRfnJ makes the RBUSY signal active. The RIP then goes off the R1 bus to allow the RIM board addressed by ADRfn-13 35 to bug DATAI £ n_- | j so that the RIP can read in this data. Two consecutive WRITE / READ cycles are thus pushed together. This 8503461 -18- is further optimized by coinciding the time it takes the RIP to decide if RBUSY has become inactive with the final processing phase of the RIM board addressed by ADRfriJ in the current cycle. This has been achieved because the RIMbord 5 makes RBUSY inactive before the RIMbord is completely ready, but it is already certain that this will be ready when the RIP can detect this. The first cycle therefore contains invalid data and an extra cycle is also required to retrieve the latest data from the RIM.

10 Op bovenbeschreven wijze wordt een minimale cyclustijd op de bus gehaald. Met de minimale cyclustijd wordt bedoeld die timing volgorde van bustoestanden, waardoor een maximale transfer rate op de bus verkregen wordt.A minimum cycle time is achieved on the bus in the manner described above. The minimum cycle time refers to that timing order of bus states, resulting in a maximum transfer rate on the bus.

Door de refresh van het RIM kan het voorkomen, dat een RIMbord 15 niet in staat is de minimale cyclustijd te halen. De RIMborden maken dit kenbaar met behulp van het RBUSY signaal. Door dit RBUSY 3ignaal met een bepaald aantal klokperiodes (BCLK) te verlengen, stelt de RIP zijn volgende access op het geheugen uit met een geheel aantal klokperiodes.Due to the refresh of the RIM, it is possible that a RIM board 15 is unable to achieve the minimum cycle time. The RIM boards make this known by means of the RBUSY signal. By extending this RBUSY 3 signal by a certain number of clock periods (BCLK), the RIP postpones its next memory access by an integer number of clock periods.

20 Eenzelfde situatie kan optreden indien de RIP nog niet klaar is met een bepaalde taak. De RIP geeft dit aan op de bus door het RAVsignaal een geheel aantal klokperiodes uit te stellen.20 The same situation can occur if the RIP has not yet completed a certain task. The RIP indicates this on the bus by delaying the RAV signal for a whole number of clock periods.

Raster image memoryRaster image memory

Het RIM 16 (Fig. 11) omvat een 24 Mbit dynamisch geheugen 220, 25 georganiseerd in 16-bits woorden en wordt als een paginagroot bitmap geheugen gebruikt. Elke geheugenplaats in het geheugen 220 stemt overeen met één exacte plaats op de uiteindelijke afgedrukte pagina. Het RIM 16 is via de RI-bus 17 met de RIP 15 verbonden en wordt door de RIP 15 gevuld met geëxpandeerde font-data en grafische data. Een 30 belangrijk proces dat in het RIM 16 plaatsvindt is het modify proces, welk wordt uitgevoerd op een geadresseerd woord. Het modify proces omvat 16 verschillende logische operaties welke kunnen worden toege-past op de inkomende data en de alreeds op een bepaald adres aanwezige data. Eén bepaalde modify functie wordt geselecteerd door een 35 RIM modify code op de lijnen RMC0 ... RMC3 223 van de RI-bus 17 aan te bieden.The RIM 16 (Fig. 11) includes a 24 Mbit dynamic memory 220, organized into 16-bit words and is used as a page-sized bitmap memory. Each memory location in memory 220 corresponds to one exact location on the final printed page. The RIM 16 is connected to the RIP 15 via the RI bus 17 and is filled by the RIP 15 with expanded font data and graphic data. An important process that takes place in the RIM 16 is the modify process, which is performed on an addressed word. The modify process comprises 16 different logical operations which can be applied to the incoming data and the data already present at a certain address. One particular modify function is selected by providing a RIM modify code on the lines RMC0 ... RMC3 223 of the RI bus 17.

Deze modify code wordt in het RMC register 222 gezet en toege- 8503461 » \ -19- voerd aan de logische rekeneenheid 223 (ALU) die is opgebouwd met programmeerbare logica. De nieuwe data (NT) wordt via het DATAO register 227 over datalijnen 225 aan de ALU 223 toegevoerd, terwijl de oude, reeds in het geheugen 220 aanwezige data (0D) via data out-5 putlijnen 226 aan de ALU 223 wordt toegevoerd. Het resultaat van de bewerking (MD) in de ALU 223 wordt via lijnen 224 in het geheugen 220 geschreven.This modify code is put in the RMC register 222 and fed to the logic calculator 223 (ALU) which is built with programmable logic. The new data (NT) is supplied via the DATA0 register 227 over data lines 225 to the ALU 223, while the old data (0D) already present in the memory 220 is supplied via data output lines 226 to the ALU 223. The result of the operation (MD) in the ALU 223 is written into memory 220 via lines 224.

In onderstaande tabel zijn enkele modify functies met de erbij behorende RM codes en de overeenkomstige logische functies weergege-10 ven.The table below shows some modify functions with the associated RM codes and the corresponding logic functions.

Modify RMC Logische functie functie 3210 15Modify RMC Logic function function 3210 15

WRITE 0 0 0 0 NDWRITE 0 0 0 0 ND

PAINT 0001 ND.OR.ODPAINT 0001 ND.OR.OD

MASK 0010 ND.AND.ODMASK 0010 ND.AND.OD

ERASE 0 0 11 NÏJ.AND.ODERASE 0 0 11 NIJ.AND.OD

20 INVERT 0 10 0 ND20 INVERT 0 10 0 ND

INV.PAINT 0101 ND.EXOR.ODINV.PAINT 0101 ND.EXOR.OD

NOP 0 110 ODNOP 0 110 OD

CLEAR 0111 ZEROCLEAR 0111 ZERO

SET 1 X X X ONESET 1 X X X ONE

25 _ ND = nieuwe data 0D = oude data25 _ ND = new data 0D = old data

Omdat de RI-bus 17 een gemultiplexte bus is, moeten de afzon- 30 derlijke adressen en de data in registers worden ingeklokt. De RI-busSince the RI bus 17 is a multiplexed bus, the individual addresses and data must be clocked in registers. The RI bus

17 is daartoe met een address/data busbuffer 228 verbonden en bij het aanbieden van een adres op de RI-bus 17 wordt dit adres via buffer 228 aan het address register 229 toegevoerd. Bij de aanbieding van data (een klokperiode later), worden deze data via buffers 228 in het DATO17 is connected to an address / data bus buffer 228 for this purpose, and when an address is presented on the RI bus 17, this address is supplied via buffer 228 to the address register 229. When data is presented (one clock period later), this data is transmitted via buffers 228 in the DATA

35 register 227 opgeslagen. Het data-in register 230 ("in" voor de RIP35 register 227 stored. The data-in register 230 ("in" for the RIP

maar "uit" voor het RIM) is toegevoegd om de uit het geheugen 220 afkomstige data, welke behoren bij het vorig aangeboden adres, op de 850 3 4 e ; -20-but "off" for the RIM) has been added to the data from memory 220 associated with the previously offered address on the 850 3 4 e; -20-

Rl-bus 17 te kunnen zetten.R1 bus 17.

De besturing van de RIM 16 wordt verzorgd door het geheugen-besturingscircuit 231. Het geheugen besturingscircuit 231 bevat een bus state sequencer om op een RAV signaal een aantal akties te star- 5 ten, welk bestaan uit het inklokken van een adres, het inklokken van erbij behorende data, het inklokken van de modify code en het op de RI-bus 17 zetten van data behorende bij het voorgaande adres. Boven dien bevat het geheugenbesturingscircuit 231 een memory state sequencer, welke gesynchroniseerd is met de bus state sequencer. De 10 memory state sequencer kan worden geïnitieerd door een refresh request of door een buscyclus voor een geheugen access. Wanneer een refresh cyclus wordt uitgevoerd, moet de eerstvolgende buscyclus worden opgeschort. Het circuit 231 is met programmeerbare logica geïmplementeerd.The control of the RIM 16 is provided by the memory control circuit 231. The memory control circuit 231 contains a bus state sequencer for starting a number of actions on a RAV signal, consisting of clocking in an address, clocking in of associated data, clocking in the modify code and putting data associated with the previous address on the RI bus 17. In addition, the memory control circuit 231 includes a memory state sequencer which is synchronized with the bus state sequencer. The 10 memory state sequencer can be initiated by a refresh request or by a bus cycle for a memory access. When a refresh cycle is performed, the next bus cycle must be suspended. Circuit 231 is implemented with programmable logic.

15 Het geheugen 220 is opgebouwd met 256 K dynamische geheugen chips en is georganiseerd in zes "banks" van 256 K woorden van 16 bits. Bank selectie vindt plaats door middel van decodering van de adreslijnen A18, A19 en A20 in de address multiplexer 232. Het adresseren van een geheugenplaats in één bank vindt plaats met behulp van adreslijnen 20 AO - A7 en A16 en het genereren van een row-address strobe (RAS) vanuit het besturingscircuit 231» en vervolgens worden adreslijnen A8, A15 en A17 aan de geheugenadreslijnen via de address multiplexer 232 toegevoerd, en een column address strobe (CAS) wordt tevens door het besturingscircuit 231 gegenereerd.Memory 220 is constructed with 256 K dynamic memory chips and is organized into six "banks" of 256 K words of 16 bits. Bank selection takes place by decoding the address lines A18, A19 and A20 in the address multiplexer 232. Addressing a memory location in one bank is done using address lines 20 AO - A7 and A16 and generating a row address strobe (RAS) from the control circuit 231 »and then address lines A8, A15 and A17 are applied to the memory address lines via the address multiplexer 232, and a column address strobe (CAS) is also generated by the control circuit 231.

25 Omdat dynamische geheugens zijn toegepast moeten alle geheugenplaatsen van het geheugen 220 tenminste één keer per 4 msec, een refresh ondergaan. Dit geschiedt door periodiek een "RAS-only" cyclus toe te voegen. Tijdens deze cyclus wordt aan alle banken een row-address aangeboden. Het refresh address in een rij wordt afgeleid met 30 behulp van een 9-bit teller welke na elke refresh cyclus met één wordt verhoogd.Because dynamic memories are used, all memory locations of memory 220 must be refreshed at least once every 4 msec. This is done by periodically adding a "RAS-only" cycle. A row address is offered to all banks during this cycle. The refresh address in a row is derived using a 9-bit counter which is increased by one after each refresh cycle.

Door activering van de RROFF-lijn van RI-bus 17 wordt de normale refresh cyclus onderbroken en de RIP 15 zorgt ervoor dat er aan de minimale cyclustijd van de eerstvolgende cyclus wordt voldaan.Activating the RROFF line of RI bus 17 interrupts the normal refresh cycle and RIP 15 ensures that the minimum cycle time of the next cycle is met.

35 Niet-geadresseerde banks van het geheugen gebruiken dan het adres op de RI-bus 17 om een refresh uit te voeren. Op de geadresseerde bank vindt refresh plaats door een access op het geselecteerde adres.35 Unaddressed banks of the memory then use the address on the RI bus 17 to perform a refresh. Refresh takes place on the addressed bank by accessing the selected address.

850 3 46 1850 3 46 1

♦ * A♦ * A

-21--21-

Bij het uitlezen van het RIM 16 zal, indien slechts één afdruk van een pagina moet worden gemaakt, op de RI-bus 17 de "CLEAR” modify code worden gezet omdat het RIM 16 na uitlezen geheel met nullen moet zijn gevuld. Indien de pagina moet worden bewaard om nog eens te wor-5 den geprint, zal op de RI-bus 17 de "NOP" modify code worden gezet. Grafische instructiesWhen reading the RIM 16, if only one printout of a page is to be made, the "CLEAR” modify code will be put on the RI bus 17 because the RIM 16 must be completely filled with zeros after reading. must be saved to be printed again, the "NOP" modify code will be put on RI bus 17. Graphical instructions

De bitmap vuiler 28 (Fig. 2) is ingericht om verschillende teksten grafische instructies uit te voeren, zoals bijvoorbeeld CHAR, MCHAR, LINE en CIRCLE.The bitmap cleaner 28 (Fig. 2) is arranged to execute various text graphic instructions, such as, for example, CHAR, MCHAR, LINE and CIRCLE.

10 Al deze instructies, welke zijn opgeslagen in de micro-PROM 71 (Fig.6), zijn uitgevoerd als micro-instructies voor de CPU 43.All of these instructions, which are stored in the micro-PROM 71 (Fig. 6), are executed as micro-instructions for the CPU 43.

De algorithmen voor deze instructies zijn zodanig geïmplementeerd dat een zo groot mogelijke bitmap vulsnelheid wordt verkregen.The algorithms for these instructions are implemented in such a way that the largest possible bitmap filling speed is obtained.

CHAR: is een instructie voor het plaatsen van een teken op de 15 juiste plaats in het bit-map geheugen 16. Aangezien de woordgrenzen van een teken meestal niet overeenkomen met de woordgrenzen van het bit-map geheugen is een verplaatsing nodig (zie Fig. 9). In het font-geheugen 13 is de bitmap representatie 200 van een teken 201 in 16-bits woorden opgeslagen. Een teken omvat gewoonlijk een aantal 20 16-bits woorden, waarvan enkele zijn aangegeven met 203, 204 en 205.CHAR: is an instruction to place a character in the correct place in the bitmap memory 16. Since the word boundaries of a character usually do not match the word boundaries of the bitmap memory, a displacement is necessary (see Fig. 9). In the font memory 13, the bitmap representation 200 of a character 201 is stored in 16-bit words. A character usually includes a number of 20 16-bit words, some of which are indicated by 203, 204 and 205.

Het hoekpunt 202 van het teken 201 wordt hier als voorbeeld als referentiepunt aangenomen, en het eerste 16-bits woord 203 bevat 16-bits waarvan het eerste bit met "0" is aangegeven, en het laatste bit met "F". De bit representatie van het eerste woord is aldus: 25 0000 0000 0001 1111.The angular point 202 of the character 201 is taken as an example here as a reference point, and the first 16-bit word 203 contains 16 bits, the first bit of which is indicated by "0" and the last bit with "F". The bit representation of the first word is thus: 25 0000 0000 0001 1111.

Bij het plaatsen van dit teken 201 op de gewenste y-positie in het bit-map geheugen 16 zal de woordgrens 207 van het bit-mapgeheugen over het algemeen slechts zelden met de woordgrens 0' van het teken 201 overeenkomen. De uit te voeren operatie zal dus overeenkomen met 30 het verschuiven van de bitmap representatie van het teken 201 over een aantal (n)bits, in de figuur aangegeven met Δ y.When this mark 201 is placed at the desired y position in the bitmap memory 16, the word boundary 207 of the bitmap memory will generally only rarely match the word boundary 0 'of the mark 201. The operation to be performed will thus correspond to shifting the bitmap representation of the character 201 over a number of (n) bits, indicated in the figure by Δy.

Op micro-instructie niveau zijn hiervoor de volgende stappen uit te voeren: rotate: van bit 0 tot bit F over/^ y (n: s Δ y) 35 merge : mask = 1 rotate mask s 0 non-rotate MCHAR: is een instructie voor het plaatsen van een teken in het 8503461 -22- bitmap geheugen 16 in gespiegelde vorm. Het uitlezen van de bit-map representatie van het teken door de VME-bus interface gebeurt in omgekeerde volgorde. Het verplaatsen van de woordgrenzen van het teken in het bit-map geheugen 16 geschiedt op identieke wijze als beschreven 5 bij CHAR. De schakeling voor het spiegelen is eveneens in de VME-bus interface ondergebracht.At micro-instruction level, the following steps can be performed: rotate: from bit 0 to bit F over / ^ y (n: s Δ y) 35 merge: mask = 1 rotate mask s 0 non-rotate MCHAR: is a instruction for placing a character in the 8503461 -22 bitmap memory 16 in mirrored form. The reading of the bit-map representation of the character by the VME bus interface is done in reverse order. The displacement of the word boundaries of the character in the bit-map memory 16 is done in an identical manner as described for CHAR. The mirroring circuit is also housed in the VME bus interface.

Voor het schrijven van tekens, lijnen, cirkels, enz. in het bitmap geheugen 16 bezit het front-end een aantal overlay mogelijkheden (Fig. 10). Aan de hand van een letter V (210) zijn in Fig.10 deze 10 mogelijkheden schematisch weergegeven. Een arcering 211 betekent dat de inhoud van het RIM 16 onveranderd is. Aangenomen wordt dat een "O" in het RIM "wit” oplevert en een ”1” in het RIM "zwart” oplevert.For writing characters, lines, circles, etc. in the bitmap memory 16, the front end has a number of overlay options (Fig. 10). These 10 options are shown schematically in Fig. 10 on the basis of a letter V (210). A hatch 211 means that the content of the RIM 16 is unchanged. It is assumed that an "O" in the RIM yields "white" and a "1" in the RIM yields "black".

WRITE: de bestaande inhoud van het RIM 16 wordt ”0" gemaakt en de bit- map representatie van een teken wordt met enen geschreven (212). 15 INVERT: de bestaande inhoud van het RIM wordt "1" gemaakt en de bit-map representatie van een teken wordt met nullen hierin geschreven (216).WRITE: the existing content of the RIM 16 is made "0" and the bitmap representation of a character is written with ones (212). 15 INVERT: the existing content of the RIM is made "1" and the bitmap representation of a sign is written with zeros herein (216).

PAINT: de inhoud van het RIM wordt niet gewist en de enen van het teken ondergaan met de inhoud van het RIM een ”0R" functie (213).PAINT: The content of the RIM is not deleted and the ones of the character undergo the ”0R” function (213) with the content of the RIM.

20 MASK: de inhoud van het RIM wordt ”0" gemaakt op die plaatsen waar het teken nullen bevat, en daar waar het teken enen bevat blijft de inhoud van het RIM gehandhaafd (214).20 MASK: The content of the RIM is made "0" in those places where the character contains zeros, and where the character contains ones the content of the RIM is maintained (214).

ERASE: de inhoud van het RIM wordt "0" gemaakt op die plaatsen waar het teken enen bevat, en daar waar het teken nullen bevat blijft 25 de inhoud van het RIM gehandhaafd (215).ERASE: the content of the RIM is made "0" in those places where the character contains ones, and where the character contains zeros, the content of the RIM is maintained (215).

INVERTING-PAINT: de inhoud van het RIM blijft gehandhaafd waar het teken een "0" bevat en waar het teken een "1" bevat wordt de inhoud van het RIM geïnverteerd.INVERTING-PAINT: The content of the RIM is maintained where the character contains a "0" and where the character contains a "1" the content of the RIM is inverted.

Voor het maken van lijnen, cirkels en cirkelbogen wordt gebruik 30 gemaakt van de meet- en regelmethoden, gebaseerd op het algorithme van Bresenham. Hierbij wordt uitgegaan van het theoretisch verloop van de lijnen en voor elke scanlijn wordt dat punt gekozen, dat deze gewenste lijn het dichtst benaderd. Het bekende algorithme, is bijvoorbeeld beschreven in ACM Transactions on Graphics, Vol. 1, no. 4, oct.To make lines, circles and arcs, the measurement and control methods are used, based on Bresenham's algorithm. This is based on the theoretical course of the lines and for each scan line that point is chosen that is closest to this desired line. The known algorithm is described, for example, in ACM Transactions on Graphics, Vol. 1, no. 4, oct.

35 1972, p. 259-279 door Robert F. Sproull, met als titel "Using programm transformations to derive line-drawing algorithms".35 1972, p. 259-279 by Robert F. Sproull, entitled "Using programm transformations to derive line-drawing algorithms".

Voor het genereren van cirkels met een lijndikte van één pixel wordt een algorithme toegepast zoals bijvoorbeeld beschreven door 8503461 -23- J.Bresenham in communications of the ACM, februari 1977, volume 20 no. 2, pag. 100-106, "A liniar Algorithm for incremental digital display of circular arcs”. Hiermee kunnen cirkels worden getekend op een rastervormig display waarbij slechts gebruik wordt gemaakt van een-5 voudige, en dus snelle, instructies zoals het testen van een teken, optellen en aftrekken.An algorithm is used for generating circles with a line width of one pixel, as described for example by 8503461 -23- J. Bresham in communications of the ACM, February 1977, volume 20 no. 2, p. 100-106, "A liniar Algorithm for incremental digital display of circular arcs". Allows circles to be drawn on a grid-shaped display using only 5-fold, and therefore quick, instructions such as testing a sign. and subtract.

Voor het genereren van rechte lijnstukken met een dikte van 3 of meer pixels, waarbij dat lijnstuk in een woord-georiënteerd bit-map geheugen wordt opgeslagen, is hierna een werkwijze beschreven.A method is described below for generating straight line segments with a thickness of 3 or more pixels, wherein that line segment is stored in a word-oriented bit-map memory.

10 Het lijnstuk heeft een bepaalde dikte (D) en ronde einden. Het beginpunt en het eindpunt vallen samen met een rasterpunt en de dikte is een oneven veelvoud van de rasterafstand. Er wordt verondersteld dat het raster een bit-map is dat zich in een woord-georiënteerd geheugen bevindt. In de beschrijving van het algorithme wordt gebruik gemaakt 15 van een rechtsdraaiend Cartesisch coördinatenstelsel dat bestaat uit een x-as en een y-as. De organisatie van het geheugen is zodanig dat de woorden in het geheugen evenwijdig aan de y-as liggen.10 The line segment has a certain thickness (D) and round ends. The start point and end point coincide with a grid point, and the thickness is an odd multiple of the grid spacing. The grid is assumed to be a bit map contained in a word-oriented memory. In the description of the algorithm, use is made of a clockwise rotating Cartesian coordinate system consisting of an x-axis and a y-axis. The organization of the memory is such that the words in the memory are parallel to the y-axis.

Een lijnstuk 250 (fig.12) wordt gegeven door de coördinaten van het beginpunt 251 (Xbeg,Ybeg), de coördinaten van het eindpunt 252 20 (Xe,Ye) en de dikte D gemeten in de rasterafstand. De begrenzing van het lijnstuk 250 wordt gegeven door een gesloten kromme, die zich in het gebied (XI <= X <= Xr, Ybot Y <= Ytop) bevindt. Bij elke waarde van X (XI <= X <s Xr) horen twee punten, 253 (X,Yb) en 254 (X,Yt) die op de begrenzing van het lijnstuk liggen. Het gebied dat de vertikale 25 lijnstukken (dikte nihil) van (X,Yb) tot (X,Yt) met ( XI <= X <= Xr) samen bestrijken is gelijk aan het gebied dat het lijnstuk met dikte D in beslag neemt. Het afbeelden van het lijnstuk kan dus herleid worden tot het afbeelden van de vertikale lijnstukken voor opeenvolgende waarden van X tussen de punten Yb en Yt. De vertikale lijnstukken 30 liggen in de woordrichting van het geheugen. Voor het afbeelden van het lijnstuk met dikte D moeten de begin- en eindpunten van deze vertikale lijnstukken bepaald worden. Deze punten worden gegenereerd door de afbeelding van de begrenzing van het lijnstuk met dikte D te bepalen. Het lijnstuk 250 met dikte D kan begrensd worden gedacht door een 35 lijn door P1 en P2, een lijn door P3 en P4, een cirkelboog door P3 en P2 en een circelboog door P4 en P1. Zoals eerder opgemerkt kunnen lijnstukken met het algorithme van Bresenham worden afgebeeld. Het is 3503461 -24- daarvoor noodzakelijk dat het begin- en eindpunt van het lijnstuk samenvallen met een rasterpunt. In de meeste gevallen zullen de punten P1, P2, P3 enP4 echter niet samenvallen met een rasterpunt, maar worden ze elk omgeven door een viertal rasterpunten: Pi1, Pi2, Pi3 en Pi4 5 (i = 1...4).A line segment 250 (Fig. 12) is given by the coordinates of the starting point 251 (Xbeg, Ybeg), the coordinates of the ending point 252 (Xe, Ye) and the thickness D measured in the field spacing. The boundary of the line segment 250 is given by a closed curve, which is in the region (XI <= X <= Xr, Ybot Y <= Ytop). Each value of X (XI <= X <s Xr) has two points, 253 (X, Yb) and 254 (X, Yt) that lie on the boundary of the line segment. The area covered by the vertical line segments (thickness nil) from (X, Yb) to (X, Yt) with (XI <= X <= Xr) is equal to the area occupied by the line segment with thickness D. The mapping of the line segment can thus be reduced to mapping the vertical segments for successive values of X between points Yb and Yt. The vertical line segments 30 are in the word direction of the memory. To depict the line segment with thickness D, the start and end points of these vertical line segments must be determined. These points are generated by determining the image of the boundary of the line segment with thickness D. The line segment 250 of thickness D can be delimited by a line through P1 and P2, a line through P3 and P4, a circular arc through P3 and P2 and a circular arc through P4 and P1. As noted earlier, line segments can be mapped using the Bresenham algorithm. It is therefore necessary that the start and end points of the line segment coincide with a grid point. In most cases, however, points P1, P2, P3 and P4 will not coincide with a grid point, but will each be surrounded by four grid points: Pi1, Pi2, Pi3 and Pi4 5 (i = 1 ... 4).

In figuur 13 is een afbeelding gegeven van een lijn door de punten PI en P2. Van de rasterpunten P1j (j = 1...4) moet het punt dat de kleinste afstand heeft tot de lijn gekozen worden als beginpunt van het af te beelden lijnstuk, hier dus punt P12. Op analoge manier komt 10 men tot een keuze voor het eindpunt, punt (P24), van het af te beelden lijnstuk. Voor het afbeelden van cirkels wordt eveneens het Bre-senham algorithme toegepast. Het beginpunt (Xbeg, Ybeg) en het eindpunt (Xe, Ye) van het af te beelden lijnstuk met dikte D vallen nu samen met het rasterpunt. Aan de eis van het Bresenham algorithme dat het 15 middelpunt van de cirkel moet samenvallen met het rasterpunt is dus voldaan. Niet alle rasterpunten van de cirkel-afbeelding moeten gegenereerd worden, maar slechts de punten die tot de afbeelding van de cirkelbogen behoren die met de afgebeelde lijnstukken de afbeelding van de begrenzing van een lijnstuk met dikte D vormen. Met behulp van 20 gegevens omtrent het begin- en het eindpunt en de dikte van het lijnstuk, kunnen nu de coördinaten van de rastersnijpunten P1*, P2*, P3* en P4* worden bepaald.Figure 13 shows a line through points PI and P2. Of the grid points P1j (j = 1 ... 4), the point which has the smallest distance to the line must be chosen as the starting point of the line segment to be displayed, i.e. point P12. Analogously, a choice is made for the end point, point (P24), of the line segment to be displayed. The Bre-senham algorithm is also used to map circles. The starting point (Xbeg, Ybeg) and the ending point (Xe, Ye) of the line segment to be imaged with thickness D now coincide with the grid point. The requirement of the Bresenham algorithm that the center of the circle must coincide with the grid point is thus met. Not all the grid points of the circle image have to be generated, but only the points that belong to the image of the arcs that form the image of the boundary of a line segment of thickness D with the line segments shown. The coordinates of the grid intersections P1 *, P2 *, P3 * and P4 * can now be determined with the aid of 20 data about the start and end points and the thickness of the line segment.

Gegeven een cirkel 261 (fig.14) met middelpunt 251 (Xc,Yc) en straal R en een lijnstuk 262 met beginpunt (Xbeg,Ybeg). Het beginpunt 25 van het lijnstuk en het middelpunt van de cirkel vallen samen met punt 251. De straal R van de cirkel 261 is gelijk aan (D-1) / 2. De cirkel 261 en het lijnstuk 262 snijden elkaar in het snijpunt S. Van de vier rasterpunten S1, S2, S3 en S4 die S omgeven moet degene met de kleinste afstand tot de raaklijn 263 aan de cirkel 261 door S geselec-30 teerd worden. Dit rasterpunt S* met de coördinaten (X*,YK) levert de informatie om de coördinaten van de rastersnijpunten P1*,P2*,P3* en P4X, dus de begin- en eindpunten van de twee lijnstukken van de begrenzing te bepalen. Hierbij worden de loodrechte afstanden van het punt S* tot het middelpunt 251 (Xc,Yc) van de cirkel 261 bepaald, 35 waarbij Hx = Xx - Xc, en Hy s Y* - Yc. Daaruit volgt voor de coörd inaten van de rastersnijpunten: 8 5 Θ 3 4 o ‘s -25- PI*: (pbeg - HyJ, pbeg + HxJ), P2*: (pe - HyJ, pe + HxJ), P3*s (pe + HyJ, pe - HxJ), en P4*: (pbeg + HyJ, pbeg - HxJ).Given a circle 261 (fig. 14) with center 251 (Xc, Yc) and radius R and a line segment 262 with starting point (Xbeg, Ybeg). The starting point 25 of the segment and the center of the circle coincide with point 251. The radius R of the circle 261 is equal to (D-1) / 2. The circle 261 and the segment 262 intersect at the intersection S. Of the four grid points S1, S2, S3 and S4 surrounding S, the one with the smallest distance from the tangent line 263 to circle 261 must be selected by S. This grid point S * with the coordinates (X *, YK) provides the information to determine the coordinates of the grid intersections P1 *, P2 *, P3 * and P4X, ie the start and end points of the two line segments of the boundary. The perpendicular distances from the point S * to the center 251 (Xc, Yc) of the circle 261 are determined, where Hx = Xx - Xc, and Hy s Y * - Yc. It follows for the coordinates of the grid intersections: 8 5 Θ 3 4 o's -25- PI *: (pbeg - HyJ, pbeg + HxJ), P2 *: (pe - HyJ, pe + HxJ), P3 * s (pe + HyJ, pe - HxJ), and P4 *: (pbeg + HyJ, pbeg - HxJ).

5 De punten P1* tot en met P4* vallen nu precies samen met de rasterpun-ten. Van het lijnstuk 262 en de cirkel 261 worden met de algorithmen van Bresenham de afbeeldingen op het raster bepaald.5 Points P1 * to P4 * now coincide exactly with the grid points. The images of the line 262 and circle 261 are determined with the Bresenham algorithms.

Bij het genereren van een lijnstuk wordt verondersteld dat het middelpunt van de cirkel samenvalt met de oorsprong van het 10 assenstelsel en dat een lijnstuk zich in het eerste oktant bevindt. Deze veronderstelling doet geen afbreuk aan de algemeenheid, daar door een eenvoudige translatie de andere gevallen naar dit geval getransformeerd kunnen worden.When generating a segment, it is assumed that the center of the circle coincides with the origin of the coordinate system and that a segment is located in the first octant. This assumption does not detract from the generality, since the other cases can be transformed to this case by a simple translation.

Het Bresenham algorithme voor het lijnstuk wordt gestart in de 15 oorsprong van het assenstelsel en het Bresenham-algorithme voor de cirkel wordt gestart in het punt (R,0), waarbij R de straal van de cirkel is. Deze algorithmen worden in het front-end quasi parallel uitgevoerd. De rasterpunten die gegenereerd worden, worden gesynchroniseerd op een gelijke y-waarde. Met het navolgend algorithme worden de 20 coördinaten (X*,Y*) van het snijpunt S* bepaald. Het algorithme convergeert naar het gebied rond het snijpunt S. In dit gebied wordt een selectie voor S* met de coördinaten (X*,Y*) gemaakt. In fig. 15 is in een flow diagram de bepaling van het snijpunt S* weergegeven.The Bresenham algorithm for the line segment is started at the origin of the coordinate system and the Bresenham algorithm for the circle is started at point (R, 0), where R is the radius of the circle. These algorithms are executed almost parallel in the front-end. The grid points generated are synchronized to an equal y value. With the following algorithm, the 20 coordinates (X *, Y *) of the intersection point S * are determined. The algorithm converges to the area around the intersection point S. In this area, a selection for S * with the coordinates (X *, Y *) is made. Fig. 15 shows the determination of the intersection point S * in a flow diagram.

Na het starten (300) van het algorithme worden eerst de verschillende 25 variabelen van de lijn en de cirkel geinitialiseerd (301): XL = 0, YL = 0, XC = R en YC = 0. Wanneer aan de voorwaarden XI < XC (302) is voldaan wordt de waarde van XL met één verhoogd (303). Vervolgens wordt met het algorithme van Bresenham de waarde voor YL van de lijn berekend (304). Wanneer aan de voorwaarden YL > YC (305) niet is 30 voldaan, dan wordt in het programma teruggesprongen naar blok 302. Indien nu nog steeds geldt XL ^ XC, dan wordt de programmalus bestaande uit blokken 303 en 304 nog een keer doorlopen en de waarde van YL wordt in blok 305 weer vergeleken met YC. Wordt aan de voorwaarde YL > YC voldaan, dan wordt YC met één verhoogd (306) en met 35 behulp van het algorithme van Bresenham wordt XC voor de cirkel berekend (307), waarna in het programma teruggekeerd wordt naar 302. Op deze wijze worden de beide programmalussen bestaande uit blokken 302 tot en met 305 en blokken 302 tot en met 307 net zo lang doorlopen 8503461 -26- tot dat XL niet meer kleiner is dan XC (302). Het programma springt dan naar blok 308. Wanneer nu geldt XL = XC dan wordt X* gelijk gemaakt aan XL en Y* aan YL (309). Is XL XC (308) dan volgt voor de waarden van X* en Y* (310): X* = XC + 1 en Y* s YC - 1.After starting (300) the algorithm, first the different 25 variables of the line and circle are initialized (301): XL = 0, YL = 0, XC = R and YC = 0. When the conditions XI <XC ( 302) the value of XL is increased by one (303). Then the Bresenham algorithm calculates the value for YL of the line (304). If the conditions YL> YC (305) are not met, the program jumps back to block 302. If XL ^ XC still applies, the program loop consisting of blocks 303 and 304 is run through again and the value of YL is again compared with YC in block 305. If the condition YL> YC is met, then YC is increased by one (306) and using the Bresenham algorithm, XC is calculated for the circle (307), after which the program returns to 302. In this way, the two program loops consisting of blocks 302 to 305 and blocks 302 to 307 continue through 8503461 -26- until XL is no less than XC (302). The program then jumps to block 308. If now XL = XC then X * is made equal to XL and Y * to YL (309). If XL XC (308) then follows for the values of X * and Y * (310): X * = XC + 1 and Y * s YC - 1.

5 Het lijnstuk 250 (fig.16) wordt gegeven door de coördinaten van het beginpunt (Xbeg,Ybeg), de coördinaten van het eindpunt (Xe,Ye) en de dikte D gemeten in de rasterafstand. Er wordt verondersteld dat Xe >= Xbeg en Ye >s Ybeg. Met andere woorden, het lijnstuk maakt een hoek met de positieve x-as die ligt tussen 0° en 90°. Als Xe < Xbeg, 10 dan kan door verwisseling van het begin- en eindpunt aan de veronderstelling Xe >= Xbeg voldaan worden. Als Ye < Ybeg dan kan door een lijnstuk te spiegelen om de horizontale lijn y = Ybeg (Ye° = 2 x Ybeg - Ye) aan de veronderstelling Ye Ybeg voldaan worden. De begin- en eindpunten van de vertikale lijnstukken moeten dan 15 echter eerst gespiegeld worden om de lijn y = Ybeg voordat de raster-punten die tot de afbeelding van deze vertikale lijnstukken behoren (in de bit-map) geactiveerd worden.The line segment 250 (fig. 16) is given by the coordinates of the starting point (Xbeg, Ybeg), the coordinates of the ending point (Xe, Ye) and the thickness D measured in the field spacing. It is assumed that Xe> = Xbeg and Ye> s Ybeg. In other words, the line segment is at an angle to the positive x axis that is between 0 ° and 90 °. If Xe <Xbeg, 10 then the assumption Xe> = Xbeg can be satisfied by switching the start and end points. If Ye <Ybeg then by mirroring a line segment around the horizontal line y = Ybeg (Ye ° = 2 x Ybeg - Ye) the assumption Ye Ybeg can be satisfied. However, the start and end points of the vertical line segments must then be mirrored about the line y = Ybeg before the raster points belonging to the image of these vertical line segments (in the bit map) are activated.

Na het bepalen van S* worden met behulp van Hx en Hy op eerder beschreven wijze de coördinaten van P1* (XT*,Y1X), P2*(X2*,Y2*), 20 P3*(X3*,Y3X) en P4*(X4*,Y4*) bepaald. De gegevens zijn nu beschikbaar om vier algorithmen, twee lijn- en twee cirkel-algorithmen, quasi parallel uit te voeren. In fig.16 loopt cirkel 1 van punt 255 tot P1* en van P2X tot punt 256, cirkel 2 loopt van punt 255 tot P4* en van P3* tot punt 256. Lijn 1 loopt van P1* tot P2* en lijn 2 loopt van P4* 25- tot P3*. De cirkel-algorithmen 1 en 2 genereren een halve cirkel die bij het bereiken van P1* respectievelijk P4* het middelpunt 251 (Xbeg, Ybeg) vervangen door het middelpunt 252 (Xe, Ye). De lijngeneratie doorloopt achtereenvolgens de gebieden 270 tot en met 274.After determining S *, the coordinates of P1 * (XT *, Y1X), P2 * (X2 *, Y2 *), 20 P3 * (X3 *, Y3X) and P4 are described in the manner described above. * (X4 *, Y4 *) determined. The data is now available to run four algorithms, two line and two circle algorithms, almost in parallel. In fig.16, circle 1 runs from point 255 to P1 * and from P2X to point 256, circle 2 runs from point 255 to P4 * and from P3 * to point 256. Line 1 runs from P1 * to P2 * and line 2 runs from P4 * 25- to P3 *. The circle algorithms 1 and 2 generate a semicircle which, when P1 * and P4 *, respectively, replace the center 251 (Xbeg, Ybeg) with the center 252 (Xe, Ye). The line generation successively traverses regions 270 through 274.

In figuur 17a, b en c is in een flow diagram het toegepaste 30 algorithme weergegeven. Het programma start (320) met het initialiseren van een aantal variabelen (321) zoals R = (D - 1)/2, XI = Xbeg - R, XR = Xe + R, Xc1 = Xbeg, Yd = Ybeg, Xc2 = Xbeg, Yc2 = Ybeg, X = XI,In figures 17a, b and c a flow diagram shows the applied algorithm. The program starts (320) with initializing some variables (321) such as R = (D - 1) / 2, XI = Xbeg - R, XR = Xe + R, Xc1 = Xbeg, Yd = Ybeg, Xc2 = Xbeg , Yc2 = Ybeg, X = XI,

Yt - Ybeg en Yb s Ybeg. Voor X = XI wordt ook de eerste vertikale lijn getekend (321). Met de code (Drln(X,Yb,Yt)) wordt aangegeven de 35 instructie: trek een vertikale lijn bij deze X, tussen de punten Yb en Yt en plaats deze lijn op de overeenkomstige plaats in het bit-map geheugen. Vervolgens wordt gestart met de berekening en generatie van 35 0 3 4 ü 1 -27- de vertikale lijnen in het gebied 270 (Fig.16). Getest wordt X < X1* (324). Indien dit geldt wordt eerst X verhoogd met één (322) en met behulp van het algorithme van Bresenham wordt voor deze waarde van X het punt Yt op cirkel 1 bepaald en het punt Yb op cirkel 2 (323).Yt - Ybeg and Yb s Ybeg. For X = XI, the first vertical line is also drawn (321). The code (Drln (X, Yb, Yt)) denotes the instruction: draw a vertical line at this X, between points Yb and Yt and place this line at the corresponding place in the bit-map memory. Subsequently, the calculation and generation of the vertical lines in the area 270 is started and the generation (Fig. 16). X <X1 * (324) is tested. If this is the case, first X is increased by one (322) and with the aid of the Bresenham algorithm the point Yt on circle 1 and the point Yb on circle 2 (323) are determined for this value of X.

5 Tevens wordt de vertikale lijn tussen Yb en Yt getekend (323) (Drln(X,Yb,Yt)) en het programma keert terug naar 324. Zolang geldt X < Xl* wordt de lus 322, 323, en 324 steeds weer doorlopen.5 Also, the vertical line between Yb and Yt is drawn (323) (Drln (X, Yb, Yt)) and the program returns to 324. As long as X <Xl *, loop 322, 323, and 324 continues to run .

Wanneer X = X1*, dan gaat het programma naar blok 325. Hierin . 10 wordt vergeleken of X4* < X2*. Is het antwoord nee, dan wordt, zoals later zal worden verklaard, het programma van blok 350 tot blok 364 doorlopen. Dit geldt bijvoorbeeld voor steile lijnen en voor lijnen die kort zijn ten opzichte van hun dikte. Wanneer geldt dat X4* < X2* (325) en X < X4* (328) dan wordt X met één verhoogd (326) en 15 met behulp van het algorithme van Bresenham wordt voor deze waarde van X het punt Yt op lijn 1 bepaald en het punt Yb op cirkel 2 (327). Bovendien wordt voor deze waarde van X de vertikale lijn tussen Yb en Yt getekend (323) (Drln(X,Yb,Yt)) en in het geheugen opgeslagen.When X = X1 *, the program goes to block 325. Here. 10 compares whether X4 * <X2 *. If the answer is no, then, as will be explained later, the program is run from block 350 to block 364. This applies, for example, to steep lines and lines that are short in relation to their thickness. When it holds that X4 * <X2 * (325) and X <X4 * (328) then X is increased by one (326) and 15 using the Bresenham algorithm, the point Yt on line 1 is determined for this value of X and the point Yb on circle 2 (327). In addition, for this value of X, the vertical line between Yb and Yt is drawn (323) (Drln (X, Yb, Yt)) and stored in memory.

Zolang geldt X < X4* (328), dus voor het gebied 271 (fig.16) wordt de 20 programmalus 326,327 en 328 doorlopen. Bij het bereiken van X = X4* wordt getest op X < X2* (331) en indien dit geldt gaat het programma voort met het verhogen van de waarde voor X met één (329), het met het algorithme van Bresenham berekenen van Yt op lijn 1 en Yb op lijn 2 en weer Dlrn(X,Yb,Yt) (329). Zolang geldt X < X2* (331) dus voor het 25 gebied 272 (fig.16) wordt de programmalus 329,330 en 331 doorlopen.As long as X <X4 * (328), so for the area 271 (Fig. 16) the 20 program loop 326,327 and 328 is run. Upon reaching X = X4 * testing for X <X2 * (331) and if so the program continues to increase the value for X by one (329), calculating Yt with Bresenham's algorithm at line 1 and Yb on line 2 and again Dlrn (X, Yb, Yt) (329). As long as X <X2 * (331) applies for the area 272 (Fig. 16), the program loop 329,330 and 331 are run through.

Bij het bereiken van X = X2* worden eerst in blok 332 de oorspronkelijke variabelen Xc1 en Yc2 van waarde veranderd, door nu de coördinaten van het eindpunt van het lijnstuk in te vullen. Dus: Xc1 s Xe en Yd a Ye. Hierna vindt generatie van het gebied 273 (fig.16) 30 plaats. Getest wordt of X < X3* (335) en zoja dan wordt de waarde van X met één verhoogd (333) en met het algorithme van Bresenham de waarde voor Yt op cirkel 1 bepaald en de waarde voor Yb op lijn 2 (334). Met Drln(X,Yb,Yt) (334) wordt de bijbehorende vertikale lijn in het bitmap geheugen geplaatst. Zolang geldt: X < X3* (335) wordt de 35 programmalus 333,334 en 335 doorlopen. Wanneer X de waarde voor X3* bereikt worden de oorspronkelijke variabelen Xc2 en Yc2 aangepast (336) volgens: Xc2 = Xe en Yc2 = Ye.When X = X2 * is reached, the original variables Xc1 and Yc2 are first changed in block 332 by now entering the coordinates of the line end point. So: Xc1 s Xe and Yd a Ye. Generation of the area 273 (Fig. 16) 30 then takes place. It is tested whether X <X3 * (335) and if so, the value of X is increased by one (333) and with the Bresenham algorithm the value for Yt on circle 1 is determined and the value for Yb on line 2 (334). Drln (X, Yb, Yt) (334) places the corresponding vertical line in the bitmap memory. As long as: X <X3 * (335), the 35 program loop 333,334 and 335 are run through. When X reaches the value for X3 *, the original variables Xc2 and Yc2 are adjusted (336) according to: Xc2 = Xe and Yc2 = Ye.

§ R I) η *\ « J v o . < · · -28-§ R I) η * \ «J v o. <· -28-

Nu vindt generatie plaats voor het laatste gebied 274 van het lijnstuk. Geldt X < XR (339) dan wordt X weer met één verhoogd (337) en met het algorithme van Bresenham wordt Yt op cirkel 1 en Yb op cirkel 2 (338) bepaald en met Drln(X,Yb,Yt) wordt het vertikale 5 lijntje in het bit-map geheugen geplaatst. Zolang geldt X < Xr (339) wordt de programmalus 337,338 en 339 doorlopen. Wanneer X de waarde XR bereikt is de generatie van het lijnstuk volledig voltooid en stopt het programma in blok 364.Generation now takes place for the last region 274 of the line segment. If X <XR (339) applies then X is increased again by one (337) and with the Bresenham algorithm Yt on circle 1 and Yb on circle 2 (338) is determined and with Drln (X, Yb, Yt) the vertical 5 line placed in the bit-map memory. As long as X <Xr (339) applies, the program loop 337,338 and 339 are run through. When X reaches the value XR, the generation of the segment is complete and the program stops in block 364.

Voor steile lijntjes (X4* > X2*) springt het programma van blok 10 325 naar 350. Wanneer geldt X < X2* (352) wordt de waarde voor X met één verhoogd (350) en met het algorithme van Bresenham wordt nu Yt op lijn 1 en Yb op cirkel 2 (351) bepaald en met Drln(X,Yb,Yt) wordt dit vertikale lijntje in het bit-map geheugen geschreven (351). Zolang geldt: X < X2K (352), wordt de programmalus 350,351 en 352 doorlopen.For straight lines (X4 *> X2 *) the program jumps from block 10 325 to 350. When X <X2 * (352) holds, the value for X is increased by one (350) and with the Bresenham algorithm Yt is now line 1 and Yb on circle 2 (351) are determined and with Drln (X, Yb, Yt) this vertical line is written in bitmap memory (351). As long as: X <X2K (352), the program loop 350,351 and 352 are run through.

15 Voor X = X2* worden evenals in blok 332 de variabelen voor Xc1 en Yc1 veranderd in Xc1 = Xe en Yc1 = Ye (353). Wanneer geldt X < X4* (356) wordt X met één verhoogd (354) en met het algorithme van Bresenham wordt nu Yt op cirkel 1 en Yb op cirkel 2 bepaald (355) en de lijn tussen Yb en Yt op de overeenkomstige plaats op het bit-map geheugen 20 weggezet (355). Zolang weer geldt: X < X4* (356), wordt de programmalus 354,355 en 356 doorlopen. Bij X = X4* wordt getest of X < X3* (359) en zo ja, dan wordt X met één verhoogd (357) en met het algorithme van Bresenham wordt Yt op cirkel 1 en Yb op lijn 2 bepaald en met Drln(X,Yb,Yt) (358) wordt dit lijntje in het geheugen 25 weggeschreven. Bij X < X3* (359) wordt steeds de programmalus 357,358 en 359 doorlopen. Wanneer X = X3* worden de variabelen veranderd (360) : Xc2 s Xe en Yc2 = Ye. Zolang geldt X < XR (363) wordt X met één verhoogd (361) en met het algorithme van Bresenham wordt Yt op cirkel 1 en Yb op cirkel 2 bepaald (362) en met Drln(X,Yb,Yt) (363) vindt een 30 geheugenopslag plaats. Zolang X * Xr (363) wordt de programmalus 361,362 en 363 doorlopen. Bereikt X de waarde XR, dan is de lijngeneratie ten einde en stopt het programma (364).For X = X2 *, as in block 332, the variables for Xc1 and Yc1 are changed to Xc1 = Xe and Yc1 = Ye (353). When X <X4 * (356) applies, X is increased by one (354) and with the Bresenham algorithm Yt on circle 1 and Yb on circle 2 is now determined (355) and the line between Yb and Yt on the corresponding place on the bitmap memory 20 is set aside (355). As long as the following applies: X <X4 * (356), the program loop 354,355 and 356 are run through. At X = X4 * it is tested whether X <X3 * (359) and if so, X is increased by one (357) and with the Bresenham algorithm Yt on circle 1 and Yb on line 2 is determined and with Drln (X , Yb, Yt) (358), this line is written into memory 25. At X <X3 * (359), the program loop 357,358 and 359 are always run through. When X = X3 * the variables are changed (360): Xc2 s Xe and Yc2 = Ye. As long as X <XR (363) holds, X is increased by one (361) and with the Bresenham algorithm Yt on circle 1 and Yb on circle 2 is determined (362) and with Drln (X, Yb, Yt) (363) a 30 memory store. As long as X * Xr (363), program loops 361, 362 and 363 are run. When X reaches the value XR, the line generation ends and the program (364) stops.

Op overeenkomstige wijze kan men een algorithme opstellen voor lijnstukken met rechte einden. In figuur 18 is een dergelijk lijnstuk 35 afgebeeld. De begrenzingen van het lijnstuk zijn de punten P1,P2,P3 en P4. Evenals bij de generatie van een lijnstuk met ronde einden, zullen deze punten samen moeten vallen met de rasterpunten 8503461 p p -29- P1*,P2*,P3* en P4*. Deze punten worden dan ook op overeenkomstige wijze bepaald. Met een algorithme zoals bij figuur 15 is beschreven wordt eerst S* bepaald. Vervolgens worden de hulpfuncties Hx en Hy gedefinieerd volgens: 5 Hx = X* - Xc en Hy = Y* - Yc. Hieruit volgt weer voor P1*: (JXbeg - Hy - HxJ,(Ybeg + Hx - HyJ) P2*: (fXe - Hy - HxJ,£Ye + Hx - HyJ) P3*s (£Xe + Hy - HxJ,CYe - Hx - HyJ) en P4*: (fXbeg + Hy - HxJ,£Ybeg - Hx - HyJ) 10 Nu zijn alle gegevens bekend voor het bepalen van de lijnstukken P1* P2*, P4* P3*, P1* P4* en P2* P3* waarmee respectievelijk lijn 1 (line 1), lijn 2 (line 2), lijn 3 (line 3) en lijn 4 (line 4) worden bedoeld. Het (Pascal) programma ziet er als volgt uit: XI: = XI*; 15 Xr: = X3*; X: = XI;Correspondingly, an algorithm can be drawn up for line segments with straight ends. Such a line section 35 is shown in Figure 18. The boundaries of the line segment are the points P1, P2, P3 and P4. As with the generation of a segment with round ends, these points will have to coincide with the grid points 8503461 p p -29-P1 *, P2 *, P3 * and P4 *. These points are therefore determined in a corresponding manner. S * is first determined with an algorithm as described in figure 15. Subsequently, the auxiliary functions Hx and Hy are defined according to: 5 Hx = X * - Xc and Hy = Y * - Yc. It follows again for P1 *: (JXbeg - Hy - HxJ, (Ybeg + Hx - HyJ) P2 *: (fXe - Hy - HxJ, £ Ye + Hx - HyJ) P3 * s (£ Xe + Hy - HxJ, CYe - Hx - HyJ) and P4 *: (fXbeg + Hy - HxJ, £ Ybeg - Hx - HyJ) 10 Now all data is known for determining the line segments P1 * P2 *, P4 * P3 *, P1 * P4 * and P2 * P3 * meaning line 1 (line 1), line 2 (line 2), line 3 (line 3) and line 4 (line 4) respectively. The (Pascal) program looks like this: XI: = XI *; 15 Xr: = X3 *; X: = XI;

Yt: s Ybeg;Yt: s Ybeg;

Yb: = Ybeg;Yb: = Ybeg;

DrawVerticalLine(X,Yb,Yt); 20DrawVerticalLine (X, Yb, Yt); 20

IF (X4* < X2*) THEN BEGINIF (X4 * <X2 *) THEN BEGIN

WHILE (X < X4*) DO BEGINWHILE (X <X4 *) DO START

25 X: = X + 1; BRESENHAM_LINE 1JSTEP(Yt); BRESENHAM_LINE3__STEP (Yb);X: = X + 1; BRESENHAM_LINE 1JSTEP (Yt); BRESENHAM_LINE3__STEP (Yb);

DrawVerticalLine(X,Yb,Yt) END;DrawVerticalLine (X, Yb, Yt) END;

30 CX = X4*J30 CX = X4 * J

WHILE (X < X2*) DO BEGINWHILE (X <X2 *) DO START

X: s X + 1; BRESENHAM_LINE 1 JSTEP(Yt); 35 BRESENHAMJLINE2JSTEP (Yb);X: s X + 1; BRESENHAM_LINE 1 JSTEP (Yt); BRESENHAMJLINE2JSTEP (Yb);

DrawVerticalLine(X,Yb,Yt)DrawVerticalLine (X, Yb, Yt)

tX = X2*JtX = X2 * J

8503461 ί· -30-8503461 ί · -30-

WHILE (X < XR) DO BEGINWHILE (X <XR) DO BEGIN

X: = X + 1; BRESENHAM_LINE4_STEP(Yt); 5 BRESENHAM_LINE 2_STEP(Yb);X: = X + 1; BRESENHAM_LINE4_STEP (Yt); BRESENHAM_LINE 2_STEP (Yb);

DrawVerticalLine(X,Yb,Yt) END;DrawVerticalLine (X, Yb, Yt) END;

ENDEND

£X = XrightJ£ X = Xright J

10 ELSE10 ELSE

BEGINGET STARTED

WHILE (X < X2*) DO BEGIN X: =X +1; 15 BRESENHAM_LINE1__STEP(Yt); BRESENHAM_LINE3-STEP(Yb); DrawVertikalLine(X,Yb,Yt) END; CX = X2x]WHILE (X <X2 *) DO BEGIN X: = X +1; BRESENHAM_LINE1__STEP (Yt); BRESENHAM_LINE3-STEP (Yb); DrawVertikalLine (X, Yb, Yt) END; CX = X2x]

20 WHILE (X < X4*) DO BEGIN20 WHILE (X <X4 *) DO START

X: = X + 1; BRESENHAM_LINE4_STEP(Yt); BRESENHAM_LINE3_STEP(Yb); 25 DrawVerticalLine(X,Yb,Yt) END; CX = X4*3X: = X + 1; BRESENHAM_LINE4_STEP (Yt); BRESENHAM_LINE3_STEP (Yb); DrawVerticalLine (X, Yb, Yt) END; CX = X4 * 3

WHILE (X < XR) DO BEGINWHILE (X <XR) DO BEGIN

30 X: +X +1; BRESENHAM__LINE4_STEP (Yt); BRESENHAM_LINE2_STEP(Yb); DrawVerticalLine(X,Yb,Yt) END;X: + X +1; BRESENHAM__LINE4_STEP (Yt); BRESENHAM_LINE2_STEP (Yb); DrawVerticalLine (X, Yb, Yt) END;

35 END35 END

CX * XrightJCX * Xright J.

8503461 -31-8503461 -31-

Bovenbeschreven algorithmen maken gebruik van de woordorganisatie van het geheugen en garanderen dat het aantal toegangen tot het geheugen minimaal is. De dikte van een lijnstuk is meestal klein in vergelijking tot de lengte van dat lijnstuk. Dit impliceert dat er 5 relatief weinig tijd nodig is om de coördinaten van P1* tot en met P4X te bepalen, zodat beschreven lijnen van het type "Solid” buitengewoon snel op een raster kunnen worden afgebeeld.The above-described algorithms make use of the word organization of the memory and guarantee that the number of accesses to the memory is minimal. The thickness of a line segment is usually small compared to the length of that line segment. This implies that it takes relatively little time to determine the coordinates from P1 * to P4X, so that described lines of the "Solid" type can be displayed on a grid extremely quickly.

De uitvinding is niet beperkt tot de beschreven uitvoeringsvormen. Zo kunnen met vergelijkbare methoden van lijngeneraties, lijnstukken op 10 andere dan orthogonale rasters worden geïmplementeerd. Deze en andere werkwijzen die door de vakman eenvouding uit de beschreven lijngeneraties kunnen worden afgeleid zullen echter alle vallen onder de hierna volgende conclusies.The invention is not limited to the described embodiments. For example, with comparable methods of line generations, line segments can be implemented on other than orthogonal grids. However, these and other methods which can be easily deduced from the line generations described by those skilled in the art will all be covered by the following claims.

35034613503461

Claims (4)

1. Werkwijze voor het genereren van een lijnstuk met een dikte D op een homogeen raster waarvan de rasterpunten in een aantal evenwijdige lijnen zijn gerangschikt, en waarbij de bit-representatie van het lijnstuk (250) wordt opgeslagen in een woord-georiënteerd bit-map 5 geheugen in de vorm van een groot aantal beeldpunten of pixels, gekenmerkt door, het bepalen van de omhullende van het lijnstuk en het afbeelden van deze omhullende op de rasterpunten, het voor de opeenvolgende rasterlijnen bepalen van de lengte van de 10 doorsnede door het lijnstuk, en het plaatsen van de bit-representatie van deze lengten in het bit-map geheugen op overeenkomstige plaatsen, waarbij de richting van de bepaalde lengten overeenstemt met de woordrichting van het bit-map geheugen.A method for generating a line segment of thickness D on a homogeneous grid whose grid points are arranged in a number of parallel lines, and wherein the bit representation of the line segment (250) is stored in a word-oriented bitmap Memory in the form of a large number of pixels or pixels, characterized by determining the envelope of the line segment and mapping this envelope on the grid dots, determining for the successive grid lines the length of the section through the segment , and placing the bit representation of these lengths in the bit map memory in corresponding places, the direction of the determined lengths corresponding to the word direction of the bit map memory. 2. Werkwijze volgens conclusie 1, gekenmerkt door, 15 het bepalen van de afbeelding van het begin- en het eindpunt van het .lijnstuk (250) op de rasterpunten, het genereren van een cirkel (261) met het beginpunt van het lijnstuk als middelpunt (X*,Y*) en met (D - 1)/2 als straal, het bepalen van de vier rasterpunten waarbinnen het snijpunt (S) van 20 deze cirkel (261) met de lijn (262) door het beginpunt (251) en het eindpunt (252) van het lijnstuk (250) zich bevindt, het bepalen van dat rasterpunt (S*) in de direkte omgeving van het snijpunt (S) dat de kleinste afstand heeft tot de raaklijn (263) aan de cirkel (261) door het snijpunt (S), en 25 het met behulp van dit bepaalde rasterpunt (S*) bepalen van vier rastersnijpunten (P1* tot en met P4*) als punten van de afgebeelde omhullende.Method according to claim 1, characterized by determining the mapping of the start and end points of the line segment (250) on the grid points, generating a circle (261) with the starting point of the line segment as the center point (X *, Y *) and with (D - 1) / 2 as radius, determining the four grid points within which the intersection (S) of this circle (261) and the line (262) through the starting point (251) and the end point (252) of the line segment (250) is located, determining that grid point (S *) in the immediate vicinity of the intersection point (S) that has the smallest distance from the tangent (263) to the circle (261 ) through the intersection point (S), and determining four grid intersection points (P1 * to P4 *) as points of the envelope shown by means of this determined grid point (S *). 3. Werkwijze volgens conclusie 2, voor het genereren van een lijnstuk met ronde einden, met het kenmerk, 30 dat de vier rastersnijpunten (P1* t/m P4*) de afbeeldingen van de aansluitpunten tussen de ronde uiteinden en de rechte omhullende lijnen van het lijnstuk vormen.Method according to claim 2, for generating a line segment with round ends, characterized in that the four grid intersections (P1 * to P4 *) represent the images of the terminals between the round ends and the straight enveloping lines of form the line segment. 4. Werkwijze volgens conclusie 2, voor het genereren van een lijnstuk met rechte einden, met het kenmerk, 35 dat de vier rastersnijpunten (P1* t/m P4*) de afbeeldingen van de hoekpunten van de omhullende lijnen van het lijnstuk vormen. 8503461Method according to claim 2, for generating a straight-ended line segment, characterized in that the four grid intersections (P1 * to P4 *) form the images of the vertices of the envelope lines of the line segment. 8503461
NL8503461A 1985-12-17 1985-12-17 METHOD FOR GENERATING LINES. NL8503461A (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
NL8503461A NL8503461A (en) 1985-12-17 1985-12-17 METHOD FOR GENERATING LINES.
DE8686202167T DE3679304D1 (en) 1985-12-17 1986-12-04 METHOD FOR GENERATING LINE PARTS.
AT86202167T ATE63650T1 (en) 1985-12-17 1986-12-04 PROCEDURE FOR GENERATION OF LINE PARTS.
EP86202167A EP0229412B1 (en) 1985-12-17 1986-12-04 A method of generating line parts
JP61301147A JPH0675977B2 (en) 1985-12-17 1986-12-17 Line segment generation method
US07/290,823 US4905166A (en) 1985-12-17 1988-12-22 Method of generating line parts

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
NL8503461 1985-12-17
NL8503461A NL8503461A (en) 1985-12-17 1985-12-17 METHOD FOR GENERATING LINES.

Publications (1)

Publication Number Publication Date
NL8503461A true NL8503461A (en) 1986-04-01

Family

ID=19847019

Family Applications (1)

Application Number Title Priority Date Filing Date
NL8503461A NL8503461A (en) 1985-12-17 1985-12-17 METHOD FOR GENERATING LINES.

Country Status (6)

Country Link
US (1) US4905166A (en)
EP (1) EP0229412B1 (en)
JP (1) JPH0675977B2 (en)
AT (1) ATE63650T1 (en)
DE (1) DE3679304D1 (en)
NL (1) NL8503461A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0249285A1 (en) * 1986-06-09 1987-12-16 Océ-Nederland B.V. A method of and a device for filling surface parts of an image with a surface pattern
EP0250196A2 (en) * 1986-06-19 1987-12-23 Rank Cintel Limited Computer graphics

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH074952B2 (en) * 1987-01-12 1995-01-25 キヤノン株式会社 Printer controller
US4837847A (en) * 1987-02-03 1989-06-06 Canon Kabushiki Kaisha Image processing apparatus
US7382929B2 (en) * 1989-05-22 2008-06-03 Pixel Instruments Corporation Spatial scan replication circuit
US5041848A (en) * 1989-11-13 1991-08-20 Gilbert John M Non-gary scale anti-aliasing method for laser printers
US5122884A (en) * 1989-11-13 1992-06-16 Lasermaster Corporation Line rasterization technique for a non-gray scale anti-aliasing method for laser printers
US5371845A (en) * 1990-04-27 1994-12-06 Ashlar, Inc. Technique for providing improved user feedback in an interactive drawing system
US5237655A (en) * 1990-07-05 1993-08-17 Eastman Kodak Company Raster image processor for all points addressable printer
JP2969285B2 (en) * 1990-09-26 1999-11-02 武藤工業株式会社 Input device for CAD
US5109517A (en) * 1990-10-09 1992-04-28 Ast Research, Inc. System for selectively controlling slots in an IBM-AT/NEC 9801 dual-compatible computer
WO1992006427A1 (en) * 1990-10-09 1992-04-16 Ast Research, Inc. System for selectively controlling slots in an ibm-at/nec 9801 dual-compatible computer
US5293472A (en) * 1991-04-22 1994-03-08 International Business Machines Corporation Method of generating lines and curves of user specified thicknesses on a raster device
JPH056431A (en) * 1991-06-27 1993-01-14 Matsushita Electric Ind Co Ltd Detector for feature point of contour line
JPH0512442A (en) * 1991-07-02 1993-01-22 Hitachi Software Eng Co Ltd Line image tracking method
JP3137245B2 (en) * 1991-10-30 2001-02-19 ソニー株式会社 Free curve creation method and free curved surface creation method
US5361333A (en) * 1992-06-04 1994-11-01 Altsys Corporation System and method for generating self-overlapping calligraphic images
JP2904673B2 (en) * 1993-04-27 1999-06-14 シャープ株式会社 Image creation device
JP3037854B2 (en) * 1993-07-13 2000-05-08 富士通株式会社 Character generation method and device
US5872553A (en) * 1994-10-28 1999-02-16 Advanced Displays Corporation High speed graphics fill of liquid crystal display
US6137471A (en) 1995-07-24 2000-10-24 L-3 Communications Corporation High speed graphics fill of liquid crystal display
US6091860A (en) * 1997-11-12 2000-07-18 Pagemasters, Inc. System and method for processing pixels for displaying and storing
US5903279A (en) * 1997-12-17 1999-05-11 Industrial Technology Research Institute Method for antialiasing
US6628840B1 (en) 2000-05-16 2003-09-30 International Business Machines Corporation Boundary mapping for multi-pel thickness lines
JP2004086809A (en) * 2002-08-29 2004-03-18 Fuji Xerox Co Ltd Image formation system and back-end processor
FR2869146B1 (en) * 2004-04-20 2006-09-15 Thales Sa METHOD FOR GRAPHIC GENERATION OF ROUND ENDED LINES

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AR245836A1 (en) * 1974-11-11 1994-02-28 Ibm Printing system
US4262290A (en) * 1978-05-12 1981-04-14 Smiths Industries Limited Display systems
US4300136A (en) * 1979-05-10 1981-11-10 Nippon Electric Co., Ltd. Display pattern preparing system
ZA832830B (en) * 1982-04-30 1983-12-28 Int Computers Ltd Digital display systems
US4621273A (en) * 1982-12-16 1986-11-04 Hewlett-Packard Company Print head for printing or vector plotting with a multiplicity of line widths
US4601002A (en) * 1983-01-06 1986-07-15 The United States Army Corps Of Engineers As Represented By The Secretary Of The Army Digital technique for constructing variable width lines
US4620287A (en) * 1983-01-20 1986-10-28 Dicomed Corporation Method and apparatus for representation of a curve of uniform width
US4679039A (en) * 1983-11-14 1987-07-07 Hewlett-Packard Company Smoothing discontinuities in the display of serial parallel line segments
NL8502643A (en) * 1985-09-27 1986-04-01 Oce Nederland Bv METHOD FOR GENERATING LINES.
US4805116A (en) * 1986-04-23 1989-02-14 International Business Machines Corporation Interpolated display characteristic value generator

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0249285A1 (en) * 1986-06-09 1987-12-16 Océ-Nederland B.V. A method of and a device for filling surface parts of an image with a surface pattern
EP0250196A2 (en) * 1986-06-19 1987-12-23 Rank Cintel Limited Computer graphics
EP0250196A3 (en) * 1986-06-19 1989-10-18 Rank Cintel Limited Computer graphics

Also Published As

Publication number Publication date
ATE63650T1 (en) 1991-06-15
US4905166A (en) 1990-02-27
JPH0675977B2 (en) 1994-09-28
EP0229412A1 (en) 1987-07-22
JPS62156961A (en) 1987-07-11
DE3679304D1 (en) 1991-06-20
EP0229412B1 (en) 1991-05-15

Similar Documents

Publication Publication Date Title
NL8503461A (en) METHOD FOR GENERATING LINES.
NL8502643A (en) METHOD FOR GENERATING LINES.
EP0547242B1 (en) Single chip page printer controller
US4203154A (en) Electronic image processing system
US5748986A (en) Method and apparatus for displaying a page with graphics information on a continuous synchronous raster output device
US4891768A (en) Raster image processor
NL8502640A (en) FRONT-END SYSTEM.
US5282269A (en) Raster image memory
US4771340A (en) Method and apparatus for printing information
NL8502641A (en) GRID IMAGE MEMORY.
JP2941688B2 (en) Graphic processing unit
JP2822856B2 (en) Graphic processing unit
JP2003241917A (en) Image processor, image processing method, program and recording medium
JPH06195469A (en) Graphic processor
JPH05204356A (en) Picture drawing device
JPH06208626A (en) Graphic processor
JPH05127657A (en) Character pattern generation device
JP2006011639A (en) Graphic object processor and graphic object processing method

Legal Events

Date Code Title Description
A1A A request for search or an international-type search has been filed
BB A search report has been drawn up
BV The patent application has lapsed