// These vary by printing engine . . .

structure PrinterAttributes:
[
breakPageword//
LandscapeDeviceword//
PaperDimensionBword//
PaperDimensionSword//
printerForwardword//
PaperSpeedInchesword//
ScanLengthInchesword//
ScanMarginAdjustword//
BitMarginAdjustword//
Capabilitiesword// what the printer can do [see defs below]
DutyCycleword// (SOS to EOS time)/(SOS to SOS time)
Facetsword// number of facets on polygon
PolygonRatioword//polygon motor clock pulses per revolution
NumBinsword
]

structure Capabilities:
[
blank bit3
cDuplexbit
blankbit
cOutputModebit2
cColorbit
cBlackbit
blankbit3
cOverflowProtect bit 3
cPimFilesbit
]

manifest
[
lenPrAttr = (size PrinterAttributes/16)
maxBins = 21
// following are bit definitions for Capabilities
mDuplex = #10000// prefer to print both sides
mTSPrint = #4000// can print both sides
mMultiBin = #2000// Penguin - if set, treat output bins as single big hopper
mMailbox = #1000// Penguin - if set, use bins as mailboxes
// mMultiBin & mMailbox are mutually exclusive - if neither is set use bottom bin only
mColor = #400// color printer
mBlackHousing = #200// color printer with black developer
//
mAuxOut = #100// has second output direction
//
mStripControl = #40// we have control of paper stripping
//
mLightControl = #20// alternate light source selectable (platen input
mStopAfterJob = #10// wait for bin-clear signal from user after each job
mStopWhenFull = 4// do not automatically clear bin counters between jobs
mSpruceClear = 2// automatically clear bin counters between jobs
// if any of the values above are set, Spruce will count the sheets in each output hopper
// and stop if there is no good place to put more paper. The three values above are mutually exclusive,
// and refer to when the bin counters are reset. If none of these options are used,
// Spruce maintains no counts.
mPimFiles = 1// Pimlico style files required (false color)**!!!separate defn in SpruceShow!!!**

//capabilities of each of the Printers
DoverCap = mStopAfterJob + mStopWhenFull + mSpruceClear
PenguinCap = mStopAfterJob + mStopWhenFull + mSpruceClear +
mTSPrint + mMultiBin + mMailbox
SequoiaCap = mStopAfterJob + mStopWhenFull + mSpruceClear
PimlicoCap = mStopAfterJob + mStopWhenFull + mSpruceClear + mColor + mPimFiles
PuffinCap = mColor + mBlackHousing + mPimFiles +
mStopAfterJob + mStopWhenFull + mSpruceClear

//default values for each of the printers
DoverDefault= 0// no overflow protection for Dovers
PenguinDefault= mStopWhenFull + mDuplex + mTSPrint + mMailbox
SequoiaDefault= mStopWhenFull
PimlicoDefault= mStopWhenFull + mColor + mPimFiles
PuffinDefault= mStopWhenFull + mColor + mPimFiles + mBlackHousing

//values for stopsPrinting
binFull = 1
jam = 2
auxHasTrash = 3
]

// December 3, 1978 4:37 PM derived from Spruce.d
// June 29, 1979 12:21 PM, add Capabilities structure, modify defaults
// August 16, 1979 11:00 AM, values for stopsPrinting
// November 28, 1979 3:18 PM, make NoOverflowProtectiondefault for Dover
// January 18, 1980 11:51 AM, add mDuplex
//