// 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 <> 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 (