Inter-Office MemorandumToInterpress NotebookDateMarch 3, 1983FromKen Pier and Bob SproullLocationPalo AltoSubjectPrinting Device File FormatOrganizationPARC/ISLXEROX Filed on: [maxc]<PrintingDocs>PDFormat.memo & .press1. IntroductionThis memo describes the format of printing device (PD) files. A PD file encodes a series of low-levelimaging commands that are used to create a binary image that is then printed on a printing device; aPD file is similar in concept to "bandslists" in [2]. The interpretation of the imaging commands isdevice-independent, but the way in which the resulting binary image is presented on the device isdevice-dependent.An Alto implementation of a PD interpreter is able to create images on a number of different ROSdevices [1]. Although this particular implementation builds a full image buffer on a large disk file, it ispossible to interpret PD files on-the-fly as the image is being formed.2. Coordinate systemLocations on the image are measured in a device-dependent coordinate system. The two axisdimensions are labeled s and f. The s, or slow, direction, is measured along the direction of papertransport, i.e., locations with greater values of s are imaged after locations with lesser values of s. Mostprinters Xerox builds have the s direction oriented along the narrow edge of an 8|X11 inch piece ofpaper ("landscape scanning"), i.e., it is oriented left-to-right on this piece of paper when you areholding it in the normal reading orientation. The f, or fast, direction is chosen so that sXf pointstoward the viewer of the image. On this piece of paper, f points vertically, from bottom to top. Theorigin of the coordinate system is chosen so that it lies on the medium and so that all points on themedium are measured with non-negative values of s and f. On this page, the origin is at the lower-leftcorner; s points to the right and f points up. On a display ("portrait scanning"), the origin is at theupper-left corner, s points down and f points to the right.The coordinate s can be thought of as addressing a scan-line and f the pixels along a scan-line. We try to avoidusing the terms width and height because these are tied to the final image and the orientation in which it is heldrather than to the raster imaging scheme; we speak instead of fSize and sSize. Note that the f direction may ormay not indicate the order in which pixels are laid down on the image.The Pimlico and Puffin color printers and the MIG use portrait scanning.The entire image size is determined by the two quantities imageSSize and imageFSize. A coordinate(s,f) lies on the image iff 0<simageSSize and 0<fimageFSize.ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î]ïg¡pô�iî¶ïc8qî]ô�Xî-¤î7Bî¶ï]ûî]î-¤î7Bî¶ïYî]î-¤î7BîüïSìrôºî¶ïN°qô�Xð4î·ïHYpô�î·ïDçqô�–ô�—ðNî·ïCô�”ðdî·ïARô�¹ô�ºðNî·ï?‡ô�¼ð,ô�½ð5î·ï=¼î·ï:Kô�¤ð<ô�¥ð$î·ï8€ô�‰ðRô�Šî·ï6µô�ðGî·ï2ýpî·ï/‹qôðPôî·ï-Àô�·ô�¸�s�qsqs�qsqð5î·ï+öô�Šð'ô�‹ s�qð2s�qî·ï*+ô�‘ô�’ s�qð1tqî·ï(`ô�Êð)ô�Ëð;î·ï&–ô�¾ð2s�qsqs�t�s�qô�¿î·ï$Ëô�¢ô�£s�qð+î·ï#ô�Ÿðaô� î·ï!6ô�Œð,ô�s�qs�qð/î·ïkô�¦s�qs�qð#ô�§ð!î·ï¡ô�s�qs�qîïRuô�•vuô�–ð-v�uð.îïÎô�vuvuô�ð;îïJô�šð:ô�›vuvuv�uîïÆô�ðFîï›ðHî·ïLqô�§ð:s qô�¨s q î·ï �stqô�t�s�ts qt�s�ts q��������� \����ü :?²[È?��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Printing Device File Format2The resolution of the device is determined by two numbers, sResolution and fResolution, which givethe number of raster points per inch along the s and f directions, respectively.A band is a region of the image bandSSize scan-lines wide. That is, the coordinate s lies in band b iffbandSSize*b<sbandSSize*(b+1). PD files must be written with information sorted into band order,i.e., commands that apply to band 0 come first, followed by commands that apply to band 1, and soon.3. Imaging modelMost of the commands in a PD file modify the raster image being built up to be sent to the printer.This section describes how the modifications are made. We use the notation M for mask data, C forcolor data, and I for the image data being built up; conceptually, these are all two-dimensional binaryarrays that cover the image. At the beginning of each page, I_ALL[0], i.e., the value of each pixel in Iis set to 0. Imaging commands in the PD file then make modifications to I. After all modificationshave been made, the image may be printed. Ink will be deposited for each pixel in the image I thathas a value of 1, and no ink will be deposited where the value is 0.The changes made to I by an imaging command are governed by the mask M, the color C, and theimaging-model-type, T. The mask M, which is specified by a mask command, conceptually covers theentire image, and has a value 1 for those pixels "inside" the mask and 0 for those points outside themask. Similarly, the color C covers the entire image; the interpretation of the values in C depends onT. If T=opaque, then pixels in C with a value of 1 will correspond to places where ink should appearin the image, and pixels with value of 0 to places where no ink should appear. If T=transparent, pixelsin C with a value of 1 will correspond to places where ink should appear and those with value 0 toplaces where the page image should remain unmodified, irrespective of the mask values. This mode isnamed transparent because it allows images laid down previously to show through a color pattern.More formally, the operation invoked by an imaging command that specifies mask M, C, and imaging-model-type is T is:if T=opaque then I_(I&nM)V(C&M) else I_IV(C&M)4. Interpreter modesThe interpreter may be operated in one of two modes, determined by the creator of the PD file. Thesemodes are:1. bandMode. The PD file gives commands for building up each band of the image, entirelyindependently of other bands. The commands in the file that apply to a given band arefollowed by an endBand command to signal that the band is finished and may be printed.2. leftOverMode. The PD file contains imaging commands for building up each band of theimage, but a command may specify a modification to the image that extends to subsequentbands beyond the initial one. The PD interpreter is responsible for maintaining "leftover lists"to remember necessary information about objects begun in one band that carry over tosubsequent bands. Conceptually, the leftover list contains a triple (M, C, T, P) that records themask, color, imaging-model type, and priority (see below) of the imaging command that is leftover.ÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î·ïfñqô�îGï�î·ïbô�¨ð;s qô�©�s qî·ï`Sô�ð/s�qs�qî·ï\áô�‘sqsqô�’ð*s�q s�qî·ï[sq�s�t�s�tsqs�qô�Œð"ô�ð$î·ïYLô�ðOô�žî·ïWî·ïSÉpô�î·ïPWqô�˜ð9ô�™ð*î·ïNŒô� ðKs�qs�qô�¡î·ïLÂô�Žs�qô�ð7î·ïJ÷ô�‡ð<s�qô�ˆ s�î·ïI-qô�ô�®sqð4s�qî·ïGbô�ð)ô�žð3s�qî·ïE—ô�ðDî·ïB%ô�Ÿs�qð*ô� s�qs�qî·ï@[ô�–s�q s�qô�—ð&î·ï>ô�šô�›ðFî·ï<Æô�’s�qð,ô�“s�q î·ï:ûsqô�s�q�sqs�qð"ô�Žð"î·ï90ô�ðNô�‚s�q�s qî·ï7fô�¡s�qðHô�¢î·ï5›ô�‘ðEô�’î·ï3Ðô�¿s qð>ô�Àî·ï0_ô�…ð'ô�†ð(s�qs�q î·ï.”ô� s�qîï+"wq�s�q�swq�s�qs�ts�q�t�q�s�t�s�qwq�s�q�s�t�q�s�t�s�q�î·ï'ipî·ï#øqô�…ðFô�†î·ï"-ô� îï»ô�¤sqðMîïðô�Ñð-ô�Òð(îï&ô�¸sqð0ô�¹îï´ô�¬sqô�ð*îïéô�°ð"ô�±ð5îïô�ðYô�ŽîïTô�åðQô�æîï‰ô�†ô�‡ð&s qîï¿ô�‹ð-ô�Œð0îïôÿ��������j����·?²[^’����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Printing Device File Format3In both cases, the information is sorted by band number, i.e., commands that apply to band 0 appearbefore commands that apply to band 1. Some interpreters may support only bandMode.When the interpreter is operated in bandMode, an operation called band clipping is performed. Bandclipping clips all imaging commands for a band so as to exclude any parts of the modification that lieoutside the band.For example, band clipping allows an imaging command that affects a region 35<s<63 to be included in theimaging commands for a band that extends over 40<s<49. As a consequence, imaging commands in bandMode mayhave values of s that lie outside the band in question and that are not in sorted order, but band clipping willrestrict the modifications to a single band.In many cases, the order in which commands are executed is importantthis is the priority issue, asdescribed in Interpress. The need to preserve priority interacts with the leftOverMode interpreter mode.There is no problem with bandMode, since every operation on the image is specified in the PD file andthe order of occurrence in the file will be the order of execution by the interpreter. The problem ariseswhen leftovers are used because the order of execution of leftovers and PD file commands must bedetermined. To solve this problem, a command named setPriority may be included in PD files to setthe priority (modally) of subsequent imaging commands: commands with a larger priority number areexecuted after commands with lower priorities. Within the sequence of imaging commands for a bandrecorded in a PD file, priority may not decrease, i.e., commands must be sorted in order of increasingpriority. The interpreter is responsible for ordering the processing of PD file entires and leftoverentries so as to preserve priority order.Commands that appear in a PD file are interpreted in order. However, when a setPriority command is encountered,interpretation may switch to the leftover list (or back). 5. Data structuresA PD file is a sequence of 16-bit words, prepared according to a format explained later in thedocument. In the description of formats, we often make use of Mesa-like structures:CARD is a 16-bit cardinal. Unless othewise annotated, CARD is assumed.CARD24 is a 24-bit cardinal.LONG CARD encodes a 32-bit cardinal as two words, with low-order word appearing first in thefile.An enumerated type such as {noFeedSheet, feedSheet} has as concrete representation a CARD(or field within a CARD) with value 0 corresponding to the first identifier in the enumeration, 1to the second, etc.Records are described by surrounding descriptions of their fields with brackets [ ].All figures are drawn with larger memory addresses nearer the bottom of the page.Load. The PD file may contain commands that store or read data in an area of the PD interpreter'smemory called the load. This memory is used to hold character masks and color specifications that arereferenced repeatedly in a PD file, thus reducing the size of the PD file by using references rather thanthe actual data. The load is an array of maxLoadWords 16-bit words, with long cardinal addresses i,����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î·ïfñqô�îGï�î·ïbô�•ð\ô�–î·ï`Sô�ðIsq�î·ï\áô�£ð$sqsq ô�¤î·ï[ô�ðCô�‘ð#î·ïYLô�îïUýuô�»ô�¼ð4v�uîïTyô�‡ô�ˆv�uð+vuîïRõô�£v�uð/ô�¤ð0îïQqô�ð,î·ïN#qô�£ð!ô�¤ð0sq î·ïLXô�…ô�†ð2sqs�î·ïJqô�ƒô�„sqsqð7î·ïHÃô�ƒð+ô�„ð>î·ïFøô�©ðOô�ªî·ïE-ô�œð,ô�s qð#î·ïCcô�“ðDô�”î·ïA˜ô�’ðEô�“î·ï?Îô�ô�ðVî·ï>ô�ÐðGô�Ñî·ï<8ô�ð)îï8êuô�€ðLv uô�îï7Bô�ð:î·ï3Špî·ï0qô�Ú ô�Ûsqð7î·ï.Mô�ðSîï*Ûuqð2uqîï'iuqîï#øuô�…qðFô�†îï"-îï»ô�žô�Ÿsqð#uîïðqô�uqð#ô�‚ð'îï&ô�îï´ðTî·ïBðQî·ïÐsô�¢qð.ô�£ð-î·ïô�Œsqô�ð2î·ï ;ô�ð5ô�‚ð4î·ïpô�¥ô�¦sqð,sÿ��������X����·)?²\âB��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Printing Device File Format40<imaxLoadWords.There is a storeLoad command available to store data in the load. The state of the load is retainedfrom image to image; storeLoad commands are processed in the order they appear in the PD file. Theintent is that the load be set at the beginning of each image, immediately preceding a startImagecommand (Section 6.2).It is not recommended to change the contents of the load in the middle of an image. Such a change will workonly if the it does not disturb portions of the load that are needed for any subsequent imaging commands,particularly imaging commands that are carried forward by the interpreter using leftovers.Sample arrays. Several imaging commands make use of a type SampleArray, which represents arectangular array of binary samples (0 and 1). This type is shown schematically in Figure 2.SampleArray: [sSize, fSize: CARD, samples: SEQUENCE COMPUTED CARD OF CARD] contains twocardinals giving the size of the array (sSize and fSize), followed by sSize scan-lines, each oneof which contains ifSize/16j words of sample data. The array represents the region0<ssSize and 0<ffSize. The first scan-line of sample data is for s=0, the second fors=1, etc. Within a scan-line, the high-order bit of the first word corresponds to f=0, the next-to-high-order bit to f=1, etc. Each scan-line is padded with zeroes to a word boundary.Tiles. A tile is a sample array that is given a particular location in the image and is tiled to cover theentire image. It is shown schematically in Figure 2.Tile: [phase, sMin, fMin: CARD, sa: SampleArray]. The sample array sa is repeated to cover theentire image. Origins of the array are at (sMin+i*sa.sSize, fMin+j*sa.fSize+i*phase), for allintegers i and j.Tiles are implemented very efficiently if phase=sMin=fMin=0 and sa.sSize=sa.fSize=16. These are sometimescalled "inkwells."Run Groups. A run group uses a run-length encoding to record binary data.Run: [fMin: CARD, lastRun: BOOLEAN, fSize: [0..32767]]. The region fMin<f<fMin+fSize1contains all 1's. The boolean lastRun is true if this is the last run on this scan-line.RunGroup: [sSize: CARD, runs: SEQUENCE COMPUTED CARD OF Run]. A run group containsruns for sSize scan-lines; each scan-line consists of one or more runs ending with a run withthe lastRun boolean true.6. PD File ContentsThe overall file structure is illustrated in Figure 3. A PD file begins with a record called the herald.Then each image is described. Each image begins with a startImage command; within each image,endBand commands mark the end of each band. At the end of the file is an endDocument command.6.1 HeraldThe herald contains information used to initialize the interpreter. The fields in the record are (Figure4):ÿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î·ïfñqô�îGï�î·ïb�t�s�tsî·ï^¬qô�« ô�¬ðYî·ï\áô�‚ðQô�ƒî·ï[ô�Ãð2ô�Äð/î·ïYLô�îïUýuô�›ð/ô�œð<îïTyô�½ô�¾ðVîïRõô�ðZî·ïO§sô�á qô�âs qî·ïMÜô�ýðAô�þîïJjsô�€q�sô�uqsuð!qîïHŸô�›ð(sqsq ô�œ�sqîïFÕôt�sqt�qôîïE �t�s�tsqô�ºt�s�tsqô�»s�qîïC@s�qô�‡ðAô�ˆs�qîïAuô�×s�qð0ô�Øî·ï>sô�–qðCô�— sqî·ï<8ô�ð4îï8Æsô�ƒq�suqsu�qsqô�„ îï6üô�¤ð)ô�¥sq�s qsq�s q�s�q�sq îï51ô�s�qsîï1ãuô�¯ð;ô�°ð.îï0;ô�î·ï,És qð?îï)Wsô� q�sq�usuq�sqst�s�t�s qîï'ô�þsqô�ÿð0îï$sqô�¯sq�uqsuqô�°îï"Pô�sqð?ô�žîï †ô�sq î·ïÍpô�iî·ï[qô�£ô�¤ðQsq�î·ï‘ô�»ð(ô�¼s qî·ïÆsqô�—ð;ô�˜s qî·ïTwô� î·ïâqô�˜ð$ô�™ðDî·ï �������� º����·Ð?²[;r��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Printing Device File Format5password: CARD=125252B. The password identifies the file as a PD file. All versions will usethis password.version: CARD. Identifies the version for which this PD file is constructed. This documentdefines files for which version=1.deviceCode: CARD. Identifies the device for which this PD file is constructed. Section 7 givesdevice codes and parameters as of this writing.sResolution, fResolution: CARD. Resolution of the device in pixels per inch along the s and fdirections.imageSSize, imageFSize: CARD. Total image size assumed by the images in this PD file. Thesedimensions may not be larger than the device can handle. The PD interpreter never translatesan image (e.g., centers it)the (0, 0) point must always lie at a corner of the page.bandSSize: CARD. The number of scan-lines in a band; otherwise ignored.maxLoadWords: LONG CARD. The size of the memory area that must be allocated to the load.copies: CARD. The number of copies of the file to print.The PD interpreter will examine the herald to determine whether it can print the file. It may disagreeabout the properties of the device or it may not be able to accommodate the resources requested (e.g.,maxLoadWords). For any of these reasons, the interpreter may reject the file.6.2 Control commandsControl commands delineate portions of a PD file and set several state variables that control theinterpretation of imaging commands (curC, curT, and curP). At the beginning of each band, curC :=ALL[1], curT := opaque, and curP := 0.startImage[interpreterMode: {bandMode, leftOverMode}, feed, strip: {false, true}, tonerColor:[0..16), passBands, nBands, fMinPage, fSizePage: CARD]. The startImage command precedesany imaging commands for an image. It tells the printer whether a new sheet of paper is to befed to the printer to hold the image, and whether the sheet is to be stripped out of the printerafter the image is formed. For all black-and-white printers, feed and strip must be true, but forcolor printers that take several passes to assemble a multi-colored page, a page will be fed onthe first pass and stripped on the last pass. The color of the toner to use for the image isspecified by tonerColor:0Black1Cyan2Magenta3YellowThe interpreterMode field determines how the interpreter will operate in the image that isstarting.The passBands argument specifies how many initial bands on the page are empty; nBandsdetermines how many bands are to be imaged (some may not have any images in them, ofÿ��������������������������������������������������������������������î·ïfñqô�îGï�îïbsqô�šuqð<ô�›îï`Sô� îï\ásqô�Éuqð*ô�Êð#îï[ô�ð"îïW¥s qô�¢uqðHô�£îïUÚô�ð/îïRhsô�¢q�ô�£�uqð8s�qs�îïPžq îïM,sô�Œquqô�ð%îïKaô�•ð!ô�–ð+sq îïI–ô�üð?ô�ýîïF$sqô�uqð8îïB²sqô�uqð4ô�Žîï?Asqô�uqð,î·ï;Ïô�ô�ðGî·ï:ô�Œðfî·ï89sqô�ðAî·ï4Çwî·ï1Uqô�Ëô�ÌðQî·ï/‹ô�•ð$s qsqô�–sqî·ï-Àô�sqsqsqîï*Ns t�q�sqô�Îsqsqsô�Ïqs îï(„qô�Åsusuqs qô�Æîï&¹ô�† ô�‡ðRîï$îô�ˆð5ô�‰ð+îï#$ô�‡ô�ˆsqsqsqîï!Yô�•ð_îïô�µð"ô�¶ð:îïÄô�s q�î£ïR�î?î£ï‡�î?î£ï½�î?î£ïò�î?îï€ô�Æsqð?ô�Çîï¶îïDô�Ásqð$ô�Âsîï yqô�¬ð8ô��������� ¼����· 2?²]ÙP����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Printing Device File Format6course). The fMinPage and fSizePage arguments specify the range of values of f thatencompasses the entire image of the page. These numbers allow the interpreter to allocatesmaller band and disk buffers for images. For multiple separations being imaged on the samesheet, all separations should have the same values for these four parameters.setPriority[priority: CARD24]. This command sets the priority for all subsequent imagingcommands, i.e., curP := priority.setColorInk. This command sets the current color curC := ALL[1], and curT := opaque.setColorClear. This command sets the current color curC := ALL[0], and curT := opaque.setColorTile[t: {opaque, transparent}, addr: LONG CARD]. This command sets the current colorcurC := (the Tile at address addr in the load), and curT := t.endBand. This control command signals the end of a band. There are nBands such commandsin each image.endDocument. This command signals the end of the document. The PD interpreter ignores anyinformation following this command.storeLoad[firstAddress: LONG CARD, wordCount: CARD, data: WORD [1..wordCount]]. Thiscommand causes the data words to be stored in the load, starting with the word whose addressrelative to the start of the load is firstAddress.deviceCommand[wordCount: CARD, data: WORD [1..wordCount]]. This command cause the datawords to be interpreted in a device-dependent way by the printer.6.3 Imaging commandsThere are seven commands that modify the image I being built up:imagePrimitive={maskSamplesRef, maskRunGroupRef, maskRectangle, maskTrapezoid,maskRunGroup, maskSamples, colorData};The following paragraphs define the interpretation of each mask type and the parameters it requires.Unless otherwise noted, C=curC, T=curT, and P=curP.maskRectangle[sMin, sSize, fMin, fSize: CARD]. M is set to 1 for (s,f) in the regionsMin<s<sMin+sSize1, fMinFirst<f<fMinFirst+fSizeFirst1; M is zero everywhere else.maskTrapezoid[sMin, sSize, fMin, fSize, fMinLast, fSizeLast: CARD]. M is set to 1 for (s,f) inthe region bounded by the trapezoid whose vertices are at (sMin, fMin), (sMin,fMin+fSize1), (sMin+sSize1, fMinLast+fSizeLast1), (sMin+sSize1, fMinLast); M iszero everywhere else.The interpolation scheme used by maskTrapezoid must be known precisely, in case thecreator of a PD file wants to predict precisely which pixels will be inside the mask.The inside of the mask is those pixels (s,f) such that sMin<s<sMin+sSize1 andb(s)<ft(s), where:b(s)=fMin+(fMinLastfMin)*(ssMin)/(sSize1)������������������������î·ïfñqô�îGï�îïbsqsqð*s�qôîï`Sô�Àô�Áð=îï^‰ô�”ðBô�•îï\¾ô�ðMîïYLs tq�sqô�ü�uqô�ýð-îïWô�sqsq�îïTsqô�Ëð%sqsqô�Ì�sîïPž qô�¶ð%sqsqô�·sîïM,tq�sô�‘q�sqsuq�uqð&îïKasqô�sqsqsqsîïGïqô�‘ô�’ð&sq îïF$ô� îïB²s qô�‡ð6ô�ˆîï@èô�ð#îï=vst�q�sqô�uq�uqs q�uqsq�uqôsqîï;«ô�‡sqô�ˆsqð&îï9áô�ð%sîï6ot�q�s qô�™�uqsquqsqô�šsîï4¤qô�ðAî·ï12wî·ï-Àqð/s�qîï*Ns qsôLð>îï(„ô�ð$qî·ï%ô�¡ðHô�¢î·ï#Gô�sqsîïÕtq�sôôquq�sqstqîïst�s�t�sq�sqsô�§ t�s�t�sq�s qs�qô�¨îï™stq�sô�—ô�˜ð!quqs�qstqîïÎôRð2ôSs qsîïq�sqô�”sq�sqsq�sqô�•sq�sqsqs�qîï9ô�î£ïÇô�†ô�‡sqð%î£ïüô�«ðOô�¬î£ï2ô�¯ ô�°stqst�s�t�sq�sqî£ïgs�q�s�q�t�s�ts�q�s�qô�î£ï Àv�u�v�uvuvu�vuv�u�vuvu�������� è����· ?²]n»������������������������������������������������������������������������������������������������������������������������������������������Printing Device File Format7t(s)=fMin+fSize+(fMinLast+fSizeLastfMinfSize)*(ssMin)/(sSize1).maskRunGroup[sMin: CARD, rg: RunGroup]. M is set to 1 in the regionsMin<s<sMin+rg.sSize1, wherever specified by a run in rg.maskSamples[sMin, fMin: CARD, a: SampleArray]. M is obtained from the sampled data, asdescribed in Section 4, in the region sMin<s<sMin+a.sSize1, fMin<f<fMin+a.fSize1.maskRunGroupRef[addr: CARD24, sMin, fMin: CARD]. Like maskRunGroup, but the run groupitself is located at address addr in the load. The value of fMin is added to the fMin's in therun group. To make a compact file, only 24 bits of addr are put in the file, and in a funny order.maskSamplesRef[addr: CARD24, sMin, fMin: CARD]. Like maskSamples, but the run group itselfis located at address addr in the load. To make a compact file, only 24 bits of addr are put inthe file, and in a funny order.colorSamples[sMin, fMin: CARD, a: SampleArray]. C is obtained from the sampled data, asdescribed in Section 4, in the region sMin<s<sMin+a.sSize1, fMin<f<fMin+a.fSize1.M is 1 in the region sMin<s<sMin+a.sSize1, fMin<f<fMin+a.fSize1, and 0 elsewhere.T is opaque.Warning: Leftovers are not maintained for maskRunGroup, maskSamples, or colorSamples because theyrequire variable-length data in the leftover list. To use these forms, the PD file must contain propermask commands in each band. However, the load-reference forms maintain proper leftovers.6.4 Encoding the commandsThe imaging and control commands are encoded with a view to reducing the size of the most commonPD files. Many of the commands have arguments, which are encoded in records immediately followingthe one-word command descriptor. The data fields are described in Section 6, and Figures 57 showhow the fields are laid out. Since character instances appear very frequently, the formats formaskRunGroupRef and maskSamplesRef are short.7. DevicesAt present, the only way to print PD files is with the Alto program PDPrint [1]. It will print on avariety of devices, listed below. If this program is run on a wide-bodied Alto (extended memory),maxLoadWords cannot exceed 60,000. If the program is run on a conventional Alto II, maxLoadWordsis restricted to 20,000.The following paragraphs describe the properties of various printing devices that can be controlled byPD files. Note Raven (Quoth). Device code=1. Landscape. sResolution=fResolution=300, imageSSize=2550,imageFSize=3300, 16<bandSSize<100.Hornet (Stinger). Device code=2. Landscape. sResolution=fResolution=384, imageSSize=3264,imageFSize=4224, 16<bandSSize<100.Gnat. Device code=3. Landscape. xx����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î·ïfñqô�îGï�î£ïbAv�u�v�uvu�vuvu�vu�vu�vuv�u�vuvuv�îï^òstq�sqôÅusq s�qôÆ îï](st�s�t�sq�sqs�qô�sîïY¶ tq�sô�¯ ô�°�usqs�qð&îïWëô�§ô�¨st�s�t�sq�sqst�s�t�sq�sqîïTystq�sqô�•�uqs q�ô�–�uqsqîïR¯ô�¢sqsqô�£sqîïPäô� sô�‚ðNîïMr tq�sqô�€�uqsuqô�s qîïK¨ô�™sq sô�šð5îïIÝô�îïFktq�sô�»usqs�qð&îïD ô�§ô�¨st�s�t�sq�sqst�s�t�sq�sqîïBÖs�qô�Œô�st�s�t�sq�sqst�s�t�sq�sqîïAs�qô�sî·ï=™qô�…sqô�†�sqs qsqî·ï;Ïô�¥ð#ô�¦ s�qð4î·ï:ô�ðXî·ï6’wî·ï3 qô�†ðYô�‡î·ï1Uô�†ð.ô�‡ð3î·ï/‹ô�–ð4ô�—ð-î·ï-ÀôðRôî·ï+ösqô�s q î·ï(=p î·ï$Ëqô�°ðaô�±î·ï#ô�¾ô�¿ðNî·ï!6sqô�ˆð(ô�‰sî·ïkqô�î·ïùô�”ð0ô�•ð6î·ï/ô�î·ï½sôoqôp�sqs qî·ïòs qô�t�st�qî·ï€sôAqsqs qî·ï¶s qô�t�st�qî·ïDsqÿ�������� :����·ý?²\¯������������������������������������������������������������������������������������������������������������������������������������������������������������������Printing Device File Format8MIG. Device code=4. Portrait. xxReticleMaker. Device code=5. Portrait. xxPuffin (Lilac). Device code=6. Portrait. sResolution=fResolution=384, imageSSize=4224,imageFSize=3264, bandSSize=16.References[1] "PD Printer Operation", March 30, 1983. Filed on [maxc]<printingdocs>pdprintops.press.[2] O. Sperber, J. Kellman, R.E. Joiner, and S.R. Dashiell, "A VLSI based Image GenerationArchitecture for Low End Electronic Printing," November 1982. RBG/ED/EED/ESDÿ����������������������������î·ïfñqô�îGï�î·ïbsqî·ï^¬s qî·ï[:sôØqsqôÙ�s qî·ïYos qô�sqî·ïU·p î·ïREqðZî·ïNÓô�óô�ôðTî·ïMô�ðL��������ä����·LÁ?²J�H��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������MASKSCOLORSTrapezoidRectangleWhite RectangleWhite TrapezoidWhite ShapeRectangleTrapezoidBlack ShapeBlack TrapezoidBlack RectangleShapeRunGroupSampledWhite ImageBlack ImageImageClearInkFilledFilledFilledFilledM _ LinesM _ SamplesM _ Computed maskM _ Computed maskC _ 0C _ 1C _ LinesColor/Mask operation: I _ I OR (C AND M); IF TRANSPARENT THEN NULL ELSE I _ I AND NOT (M AND NOT C)which is equivalent to: IF opaque THEN I _ (I AND NOT M) OR (C AND M) ELSE I _ I OR (C AND M)File: PDFormat01.silFigure 1 - PD Functional MatrixSample Arrayline[1]line[0]line[sSize-1]...sSizefSizesSizefSize(0,0)sfphasef.QQ(sMin,fMin)'.QW,TiledWQ.sIMAGEDATA STRUCTURESTILED FORMFigure 2 - Data structuresRun GroupsSizefMinfSizeNlastRun. . .3/3/83TileSamplearrayfMinsMinphaseSampledC _ LinesImage��î(ïNŸþ�kÈî�Žï_üþG�kî%:ïf<ðî rïdüþ>;�kî�ŽïY¼þG�Žî�ŽïT-þG�Žîï`®ðîäïbçð îÈïbçð îï]Xðî¬ï]Xðî*:ï]XðîïQð î¬ïQð î*:ïW<ðî¬ïW<ðîïW<ðî/:ïQðî+åïbçðî<ïbçðî9Éï]Xðî9ÉïW<ðî>ÉïQðîGïNþ�ŽVî8ïNŸþ�kÈî9ï]Xðî9ïWÊðîïQðî¬ïQðî*:ïQðî9ÉïQðî*Èvïað î:Wïaðîïaðî¬ïaðî9pï[ðî9ïU‘ðî9ïOtð î�ŽïNþG�Žî �vïEPðgî �ïCðaî>;ïðîspï@tð"î«ï4;ðî«ï.¬þ�Gî«ï0åþ�Gî«ï%Èþ�G î«ï%Èþd�GîÈï&þ�G VîÇï*ÈðîÇï-ðîÇï&Wð îäï(ðîäï)ðîäï)¬ðîÇï1sðîÇï/:ðî��ï<mþOt�kî«ï:þ�GîÈï+þ�G Vî«ï äþd�Gî«ï äþ�G î«ïyþ�$îÈï+þ�$ VîVvïÝðî VïÁðîrï¤ðî pï«ðîäïÖþ�$äî9ï«ðî&3ï¬þ9�Gî&3ïäþ€�Gî&3ïäþ�Gî&3ï:þ€�Gî#úïþ€�Gî#úïþ€�Gî#úïþ€�Gî#úï«þ�Gî#úïsþ9�Gî(lïsþ€�Gî(lïþ€�Gî(lïþ€�Gî(lïþ�Gî(lïþ€�Gî*¥ïdþ�GÈî(lïäþ9�Gî(úï yþ �$î+Áï²þÇ�$î1ÞvïOðî!Áïþ�$äî pï rðî|ï;ðîÈï]þä�$îUïðî!3ï;ðîävïðî$e|ï-ðî(lï +þ�G9î&3ï¤þ9�kî&3ï 2þ9�kî&3ï þ�krî&3ïòþ�G9î(lï þ�krîï Wðî9ïðî9ïðî«ï Wðî9pïQðî1P|ï‰ðî1PïÉðî1Þï Gþ�$Çî1Þïdþ�$Çî#úï$þ�$�Gî#³ïkþ�k�$î#³ïkþ�$�kî#lï²þ�G�$î#lïÖþ�$�Gî#%ïùþ�k�$î#%ïþ�$�Gî"ÞïAþ�k�$î-ï þä�$î0åï�åðî+WpïVðî$Aï�þ�G�$î rï¬ðîï7ðî :ï¬ð îï9ðî9Éï4;ð î«ï3þ�Gî8ï3þ�GîC;ï&þ�G Vî8ï%Èþd�Gî8ï%Èþ�G î8ï0åþ�Gî9;ï1sðî8ï.Ðþ�$î8ï,sþ�Gî9;ï/:ðî9;ï,ºþ�G9î:Wï-ðî8¬|ï$uðî;tpï)¬ðî;tï&Wðî>;vï�ùðî$ï«þ9�Gî¬ï3þ�Gî*Èï&þ�G Vî¬ï%Èþd�Gî¬ï%Èþ�G î¬ï0åþ�Gî¬ï.¬þ�Gî¬pï4;ðî Èï(ðî Èï&åðî¬ï,sþ�Gî Èï-ðî Èï/:ðî Èï1sðî�ŽïH‚þ�käî�ŽïHþs�kî rïH‚þ�käîïH‚þ�käî9ïK‘ðî9ïIXð î äïKð�������ä�����ùOtf§%������������������������������������������������������������������������������������������������������������������������������������������������������������������Herald..................* indicates optional control codesFile: PDFormat02.silsResolutionfResolutionbandSSizecopiespassworddeviceCodeFigure 4 - Herald Formatall entries CARD unless otherwise shownFigure 3 - PD File StructureversionimageSSize imageFSize 3/3/83maxLoadWords(LONG CARD)setColorInk*imagingCommandimagingCommandimagingCommandendBandimagingCommandimagingCommandimagingCommandimagingCommandendBandimagingCommandendBandendBandendBandendDocumentstartImagestartImagestartImagestoreLoad*���îrï[ðîVïNæðîVïNXðîVïMÊðîVïBðîVïC;ðîVïCÉðî äï9Éðî äï9;ðî äï8¬ðî �ï/:ðî �ï/Éðî �ï0Wðî �ï)¬ðî �ï)ðî �ï(ðî äï=ðî äï=ðî äï>;ðîï:ð#î>;vïÝðî%Èï�Õþ�Ž]çî0åpïNXðî0åïKðî0åïAð î0åï7ðî0åïXXðî0åïQð î.¬ïZþ¬�GîIXï6,þ�G$î.¬ï5åþ�G$eî.¬ïW<þ¬�Gî.¬ïSæþ¬�Gî.¬ïP‘þ¬�Gî.¬ïM;þ¬�Gî.¬ïIæþ¬�Gî.¬ïFþ¬�Gî.¬ïC;þ¬�Gî.¬ï?æþ¬�Gî.¬ï9;þ¬�Gî.¬ï5åþ¬�Gî.¬ï9ðî.¬ï2ð'î«ï9ðî0åïUðî0åïGðî0åïDXðî>;vïÀðî0åpï=ðî0åï:åðîïP‘ðîïSæðîïR<ðîïLðîïJtðîïH;ðîïFðîïDæðîïAðîï?Wðîï6tðîï4Éðîï-ðîï&Wðî«ï$ðî«ï*Èð î«ï1sð î«ïVð î«ïXæð �������ïä��r�ÕLB]ç7��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������File: PDFormat03.silmaskRectangle argumentssMinsSizesSizesMinmaskTrapezoid argumentsfMinLastfSizeLastsMinmaskRunGroup argumentsfMinfSizefMinfSizeRunGroupsee Figure 2sMinfMinSampleArraysee Figure 2maskSamples argumentsfMinsMinmaskRunGroupRef argumentsaddraddr (low 16 bits)addr (low 16 bits)addrsMinfMinmaskSamplesRef argumentsFigure 5 - Commandstypcomtyp (2 bit field) rest00 = control commandmaskRectangle, maskTrapezoid,com is 6-bit command field, depending on type:Additional arguments in Figure 6Note that 'rest' is used in maskSamplesRefand maskRunGroupRef3/3/8310 = imaging commandmaskRunGroup, maskSamples, colorSamples}imaging: com={maskSamplesRef, maskRunGroupRef,control: com={startImage, setPriority, setColorInk,setColorClear, setColorTile, endBand,endDocument, storeLoad, deviceCommand}Additional arguments in Figure 7Figure 6 - Imaging argumentssee Figure 2SampleArrayfMinsMincolorSamples arguments��î<vï¤ðî,sï�Gþ�kgYî0åpïd‘ðî5åïaÊðî5åï_‘ðî0åïcuþÈ�GîGïZØþ�Gäî0åïZ‘þ�Gî0åïZ‘þ�G +î0åïa<þ�Gî0åï_þ�Gî0åï\Êþ�Gî0åïOtþ�Gî0åïQþ�Gî0åïSæþ�Gî0åïHÉþ�G î0åïM;þ�GîGïIþ�G Vî0åïVþÈ�Gî5åïR<ðî5åïTtðî0åïW<ðî0åïHÉþ�Gî0åïKþ�Gî5åïK‘ðî5åïIXð î5åïBðî0åïDXþÈ�Gî0åïBþ�Gî0åï=þ�Gî0åïEtðî5åï]Xðî5åï[ðî5åïPðî5åïMÊðî5åï@tðî5åï>ÉðîGï=ôþ�G«î0åï=ôþ�G«î0åï0Wþ�Gî5åï8ðî0åï9ÉþÈ�Gî0åï7þ�Gî0åï5Wþ�Gî5åï5åðî0åï0žþ�G rîGï0žþ�G rî5åï3ðî5åï1sðî0åï:åðî5åï$ðî0åï#þ�Gî0åï%Èþ�Gî5åï&Wðî0åï-ðî<ï,sþ«�GîGï#Öþ�Gäî<ï*þ�G9î0åï(þÈ�Gî0åï*:þ�Gî<ï*^þ«�$î?æï*Èðî5åï(ðî0åï#Öþ�G«î0åïþ�G«î5åïÈðî?æïðî<ï–þ«�$î0åïsþ�Gî0åï:þÈ�Gî<ïºþ�G9îGïþ�Gäî<ï¬þ«�Gî5åïðî0åïþ�Gî0åïÈþ�Gî5åïVðî0åï Èðî9ï«ðî9ïe þÈ�Gîïc.þ�G9î9ïbçþ�Gî9ïbçþ�G€îïeCþÈ�$î%Èïc.þ�$9îïc þë�$î«ïc.þ�$9îÇïcuðîÇïcuðîÇï_ðîÇï]XðîïcuðîŽï[®ðî«ïR<ðîÇïW<ð.î«ïMÊð î«ïK‘ð*î«ïIæðî<vï‡ðîŽpï]Xðî«ïP‘ð(îÇïSæð.îÇïGð3î«ïEtð%î«ïCÉð&î«ï@tð î0åï«ðî5åï ðî5åï9ðî5åï�ðî0åïrþ�Gî0åï«þ�Gî0åïäþÈ�Gî5åï9ðî0åï rþ�Gî0åï ¹þ�G rîGï ¹þ�G rî0åïð�������’ä��9�GH‚gY@������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������File: PDFormat04.silstartImage argumentsXFStonertoner = {black, cyan, magentayellow, ...}setPriority argumentsprioritywordCount......data wordsdata words......wordCountdeviceCommand argumentsS = {noStripSheet, stripSheet}F = {noFeedSheet, feedSheet}storeLoad arguments3/3/83firstAddress(LONG CARD)X = 9-bit zeroed fieldMM = {bandMode, leftOverMode}passBandsfMinPagefSizePagenBandssetColorTile argumentstaddr(LONG CARD)Figure 7 - Control arguments7-bit field4-bit field���îVïbXþs�GîVï` þº�Gî<vï¤ðîVpïe ðî+åï`gþ�G9î)¬ï`gþ�G9î'sï`gþ�G9î%:ï`gþ�G9îï`®ðî(ï`®ðî*:ï`®ðî-ï`®ðîVïM;ðî#ïK‘ðîVïBþ�G€îVïBþ�GîVïGðî$¬ïBðîVï3þ:�Gî2ï.óþ�GrîVï.¬þ�GîVï.¬þ�G¹îVï!Vþ�G îVï!Vþ�Gî2ï!žþ�G VîVï,sþ:�Gî"sï-ð î%:tï+3ðî%:ï*¥ðî%:ï*ðî%:ï#úðî%:ï$ˆðî%:ï%ðî"spï&åð î"sï«ð î%:tïÝðî%:ïOðî%:ïÁðî%:ïÝðî%:ïkðî%:ïúðî!VpïÈð îVï:þ:�GîVïsþ:�Gî2ïdþ�G VîVïþ�GîVïþ�G îVïsþ�GîVïðîVïNæðîVïP‘ðîVï4;ðî<vï‡ðî!åpï1sðî!åï/:ðîVïSæðî%Èï`®ðîVïR<ðîVï]çþs�GîVïYuþº�GîVïW<þs�GîVïWƒþ�Gî4ÉïWƒþ�Gî Èï^uð î ÈïZðî ÈïWÊð îVï[®þº�Gî Èï\<ðî'sïDŸþ�G9î2ïBfþ�Grî&WïD{þ9�$îVï>ÉðîVï7þ:�GîVïDXþ�Gî'sïFþ�Gî'sï=þ�Gî'sï;»þ�G9îVï7Iþ�Grî2ï7Iþ�G«îVï;tþ:�Gî0åï;»þ�G9î1sï<ðî#ï9Éðî"sï7ðîVï rðî(tï<mðî-ïcQðÿ�������Õä��V‡*¥dü©��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ÿ TIMESROMAN����������������ÿ TIMESROMAN������������ �����ÿLOGO�����������������������ÿ TIMESROMAN����������� �����ÿMATH������������������ �����ÿ TIMESROMAN�����������������ÿ TIMESROMAN����������������ÿ TIMESROMAN����������� �����ÿ HELVETICA������������ ����ÿ HELVETICA�����������������ÿ HELVETICA����������������ÿTEMPLATE��������������@����������������������������������������������������������������������������������������������������������������������������������������Á���� �n���� �¾�����Ž���"��°���)��E���0��Q���8��¸���:��Q���?��Ð���B��ö���G��k��J����¥u ��%[9;æ�ýPå�ý�ZŠ�%Si4�=Q]Q„�=OC�„�=LCý�]J"ýPå%F9Fæ�ýPå�ý�ZŠ�%>i� r½‚~¬éž=þú=%Í*%i<�‚ ü�Z Yœ}�:ú }ü�Z" -¹iP�=O;]N=L;]L=I;�]J%G9IçÀÈEG=G#=¦å|ÖÕŸÛ�È=5;]X%39WçÈ-3Ž�M1í=)]K=(Z$"9‹å :ú %A9aæ�9`ç�E<"$9[æ�9Zç�B$=5]W:ú %S9Pæ�9Oç�í=í�)Õ™–•ü�®¸%AE_%^)›çE\%÷=[æ�Š�…�iX�=°Cý�]R%ì=‹C%å9Oç…P‚„…�B—ø" -EiÖ�%^9^ç�B"j/�M� �K�ÿÿš°þêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpdformat.press�������������������������������������Sproull������������������������29-Mar-83 18:07:38 PST:����������������������������������������������������������������������������������������������������������������������������������������������������