// PressInternals.df -- Definitions universal to press printing code. // last modified by PolleZ and Swinehart August 27, 1984 // Enlarge space for FPREQ; version 5.1 // last modified by Williams February 14, 1983 10:35 AM // -- added BandWidth to PageG // last modified by Butterfield, October 16, 1980 10:56 AM // BEMaxH, increase by 14 from 8 to 22 to include more rectangles - 10/15 // - F, replace DATable with fmap - 4/18/80 // File stuff manifest [ //Must be ne 0 for WindowChangeType FILERW=1 //Read-write FILERO=2 //Read only FILEWO=3 //Write only FILEBits=0 //Bit-map output file FILEScratch=1 //Scratch file FILELeftOver1=2 //Left-over files FILELeftOver2=3 // " FILEBands=4 //File for storing band information FILEMeter=5 //File for metering information FILEFontDictionary=6 //File for font dictionary FILEPressProgram=7 //The program file for overlays FILEExternal=8 //a file referenced from the Press file (dots,fonts) FILEPress=1000 //The Press file !!!!!!!! ] structure F: //"FILE" structure [ Type word //Type of file (read only, etc.) Name word //"Name" (integer code) Device word //Device code Pagesize word // -- page size of device LogPagesize word // -- and its log base 2 Pagecnt word //Length in pages fp word 3 = [ serialNumber word 2 version word //File ID for BFS ] DAFirst word //If non-zero, page n is at logical // adr DAFirst+n. fmap word 0 // ISF fmap (if file is random allocated) ] structure Color : [ Hue byte //"WaveLength" Saturation byte //"Purity" Intensity byte //"Luminance" spare byte ] manifest lColor=size Color/16 manifest [ DISK31=0 //File resides on Model 31 DISK31B=1 //Second model 31 disk DISKT80=2 //File resides on T80 disk ] // Window Stuff manifest [ //Must be ne 0 for WindowChangeType WINDOWNoStrategy=1 //No special windowing strategy WINDOWPageAhead=2 //Read on ahead. ] structure block : //Describes a buffer in core. [ CoreAdr word //Core address of buffer. PN word //File page number in this buffer. Age word //For LRU strategy Status word //For clean,dirty ] structure W : //Window descriptor. [ spare1 word //Leave a few here so that people who spare2 word //use windows for other purposes can spare3 word //define structures that have special spare4 word //purpose entries here Base word //For current buffer Offset word // " WhichByte word //=0 for left, 1 for right. ByteCount word //Bumped for each "byte" read File word //File for this window. Strategy word //Paging strategy BufSize word //Size of the buffer LogBufSize word //Log (base 2) of buffer size CurPN word //Current page number CurBuf word //Current "buffer" structure NumBlocks word //Number of available block strs. @block↑1,40 ] // Page stuff structure PageG : //Page Goodie block [ FirstBand word //Lowest used band LastBand word //Highest used band BitMargin word //Margin and BitWc word //Word count of scan lines BandPos word 2 //File position of band stuff BitPage word //File position of bits (units = 1024 words) CopyCrucial bit //True if different version needed for different copies. SimplePage bit ColorPass bit 2 //for color printers: 0=magenta,1=yellow,2=cyan,3=black ColorUsed bit //True if color used (only scan convert once for black) blank bit 11 PageNumber word //From original Press file. //*** added for Spruce-like operation nRecords word fontLoad word BandWidth word //This is used for high-resolution slicing. ] structure FontG: [ nRecords word bandPos word fontLength word ] // Communication out of Fonts Pass. Following is a font descriptor: structure FPOS : //File position descriptor [ File byte //File identifier (see below) Len byte 3 ] manifest [ FPOSThis=0 //This file. FPOSScratch=1 //Scratch file. FPOSGod=2 //God file. FPOSDNE=#377 //Does not exist. (-1) ] structure FDES : //Font descriptor [ set byte font byte bc byte ec byte WTPos: [ @FPOS ] = [ spare1 word; AuxSet byte; AuxFont byte ] ICCPos: [ @FPOS ] = [ spare word; ICCBase word ] ] // Following are abstracted definitions from IX -- names are changed // so that there is no confusion (dammit) ************** structure CharWidthp : //Modified version of IX.DFS defn. [ WS word 2 //Width in "scan" direction WB word 2 //Width in "bit" direction OS word //Offset in scan direction OB word //Offset in bit direction DS word //Dimension in scan direction DB word //Dimension in bit direction ] manifest [ DBNonExCode=-1 //DB contains this if nonex char DBSplineCode=-2 // or this if recorded as splines ] // Stuff for scan conversion pass. structure RB : //"Read Block" for a leftover table [ Sync word //Current sync count @Color =Color word lColor //Color after sync encountered Reading word //True if reading from this leftover Base word // entries in structure W Offset word ] // Magic constant for dots -- the "constant" for expressing magnificatio ratios manifest DotsDeltaConst=#037777 //Must be small enough so 2*it is positive number // Output device definitions: manifest [ printerDover=0 printerSequoia=1 printerPimlicoAlt=2 printerPimlico=3 printerPenguin=4 printerPuffin=5 printerDurango=6 //Durango must be last ORbit printer printerSlot=7 printerVersatec=8 printerHg=9 ] // MicroCode Trap values manifest [ NoTrap=#55001 //STA 3,1,2 ScanLoadVarsTrap=#70000 ScanPutCharTrap=#70001 ScanPutDotsTrap=#70002 DoubleAddTrap=#70003 DoubleSubTrap=#70004 DoubleShrTrap=#70005 PreRotorTrap=#70023 PrintVersatecTrap=#70000 PrintHgTrap=#70001 ] // Band Bucket entries structure BEH : //Band Entry Header [ Cbit bit //True if char (BEChar) Type bit 15 // otherwise, type code. ] structure BEChar : //Band Entry for Character [ Cbit bit ICC bit 15 //Internal Character Code Sr bit 4 // delta scan line before start Bit bit 12 //Address on scan line ] structure BERectangle : //Rectangle ("rule") [ Type word //must be 1 Sr bit 4 // delta scan line before start Bit bit 12 //Address on scan line nHeight word //-height in bits widthM1 word //width-1 in bits ] structure BELOChar : //"Left over" version of character [ //*** down to *** definitions known to microcode Cbit bit spare bit 3 orbitW bit 12 //-height of character in bits [ orbitX bit 4 //scan line in band to start on orbitY bit 12 //y pos on scan line ] =Bit word //Addr on scan line (to set orbitX=0 (standard)) bitOffset bit 4 //offset of char start in word of font orbitS bit 12 //ns from font (orbit mode, so ns-1), but ns decreases CoreAdr word //Pointer into char rep. //*** end *** ] manifest CharBit=#100000 //For "anding" and testing Cbit structure BESync : //Band Entry for Sync counter [ H word Sync word //Sync counter @Color //Color information =Color word lColor ] structure BECopy : //Band Entry for Copy Number [ H word Copy word //Copy number ] structure BEDots : //Band Entry for Dots stuff [ H word //Type //*** down to *** definitions known to microcode Bstart word //Starting Bit position in output buffer Bincr word //Bit direction (+1,-1) Bdim word //Dimension in B of dots region Opaque bit //True if white bits are opaque Smagnify bit //True if magnified in S direction Bmagnify bit //True if magnified in B direction Code bit 13 //Code entry from <<Set-coding>> Bdelta word // Magnification ratio (denominator = DotsDeltaConst) BitBuf word //Pointer to first word of input bits BitPhase word //Bit position in word where first sample begins ErrorBuffer word //Pointer to error propagation vector ScreenModulus word //n x n bit screen => put n here ScreenAddress word //Core address of screen (0=> dont use) IMin word //Intensity ranges for 1/2 toning IMax word //*** end *** BitFilePos word 2 //Bit position in file of start of bits BitFileInc word 2 //Delta to add to above each scanline BitFileSLWC word //Number of words of bits file that need to // be read for each scan-line (<BitFileInc if windowed) Sstart word //Beginning scan-line Sdim word //Dimension in S of dots region Sdelta word // Magnification ratio File word //File with bits (FILEPress or FILEScratch) //Following are kept only at scan-conversion time WindowNumber word //Index in window table for this dots file. Scount word //Phase of S magnification operation TempSLBuf word //For holding one scan-line during blow-up ScreenStart word //holds screen values for halftone ScreenAmplitude word ScreenAngle word [ OMinB byte OMinH byte OMinS byte OMaxB byte OMaxH byte OMaxS byte ] =OStats word 3 ] structure SH : [ //"header" for graphics things H word //Type Sbegin word //Leftmost Scan line Send word //Rightmost Scan line ] structure BELine : //Line (see SCV.DFS) [ @SH Bit word 2 //Current bit position dBit word 2 // delta ] structure BESpline : //Spline (see SCV.DFS) [ @SH Stuff word 8*2 //Recursive quantities ] structure BEEndObject : [ H word //Type ] structure BEEnd : //End of band [ H word filler word ] manifest [ //Op codes for BE's that are not chars (BEH.Type): BEEndH=0 //Planning ahead for OrBit BERectangleH=1 //Planning ahead for OrBit BEDotsH=2 BESyncH=3 BECopyH=4 BELineH=5 BESplineH=6 BEEndObjectH=7 BEExtendedRectangleH = 8; // rectangle with bit + 2↑13 // 9 through 22 are more extended rectangles (with bit + (H - 7) * 2↑13) BELastRectangleH = 22; // rectangle with bit + 15 * 2↑13 // (before adding consider adding one to make the rectangles a block of 16) BEMaxH=22 //Max value of H entries BEMaxSize=60 //Maximum size of a BE entry (plus a little!). ] // Ether Reporting definitions structure REPFont[ fam byte //Family code from dictionary face byte //Face code requested siz word //Size of font used byte //Which family was actually used splines bit //Scan-converted from splines spare bit 7 ] manifest REPFontLen=(size REPFont/16) manifest nReportFonts=10 structure REP[ Version word //Version of the program Directive word //What he asked to have done Success bit //Completed successfully Jams bit 3 //Number of paper jams PaperOut bit //Did hopper exhaust? spare bit 11 lastError word //Last value encountered by PressError nCopies word //Number of copies printed nPages word //Number of pages processed totalTime word //Elapsed time of session nChars word 2 //Total number of characters nObjects word //Total number of objects (incl. rectangles) nDots word //Number of bit-maps nHalfTones word //Number of half-tones FontTime word //Time spend in fonts pass PreTime word //Time spent in pre-scan RotTime word //Time spent in rotation ConvertTime word //Time spent in scan-converting nCharFaults word //Number of font storage faults BandSize word 2 //Number of words of band information BandFileSorts word //Number of times in-core sort failed DotsOut word 2 //Number of output dots generated by PutDots User word 16 //User name from document directory File word 20 //File name from document directory FontsUsed word //#fonts he used FontsRecorded word //# fonts recorded below fonts word nReportFonts*REPFontLen ] // Metering definitions manifest [ METERRead=0 //Page read (FLStat) METERWrite=1 //Page write (FLStat) METERFontPass=10 //Font pass entry (FPStat) METERFontCharConvert=11 //Converted a "font part character" METERFontConvert=12 //Converted a font (FPCStat) METERShowPage=13 //PreScan pass for page (PSStat) BandDist=30 // ...size of distribution table... BandDistUnit=4 // (one character) nFMCycleDist=60 // ...size of FM cycle distribution table... FMCycleUnit=20 METERBandFlush=14 //Called when bands flushed METERConvertPage=15 //ScanConvert pass for a page (SCStat) METERRep=16 //REP structure for print task METERFault=17 //Character fault METEREnd=127 //Last of all.... ] structure METERH: [ Type byte //Op code Count byte //Number of words (inc this one) ] structure METERTimes: [ TimeIn word //Times for a pass TimeOut word ] structure FLStat: //For recording a page transaction. [ File byte //File number Cnt byte //Page count Page word //Beginning page number ] structure FPStat: [ @METERTimes ICCtotal word //Total number of different chars. ] structure FPCStat: [ @METERTimes fpreq word 29 //FPREQ structure! ] structure PSStat: [ @METERTimes PG: @PageG //PageG entry for this page. Entities word //Number of entities CharCount word //Number of characters ObjCount word //Number of objects DotCount word //Number of "dots" regions RectCount word //Number of rectangles FontChanges word //Number of font changes ColorChanges word //Number of color changes ShowChars word //Number of separate "show chars" coms BandSizes word BandDist //Distribution of band sizes ] structure SCStat: [ @METERTimes LOSizes word BandDist //Distribution of leftover sizes TotSizes word BandDist //Distribution of LOin+EnterIn sizes FMCycleDist word nFMCycleDist //Distribution of Font memory cycles ] structure FAULTStat: [ ICC word //Internal character code of needed char ]