*PPD-Adobe: "4.1"
*% Adobe Systems PostScript(R) Printer Description File
*% Copyright 1987-1992 Adobe Systems Incorporated. 
*% All Rights Reserved. 
*% Permission is granted for redistribution of this file as
*% long as this copyright notice is intact and the contents
*% of the file is not altered in any way from its original form.
*% End of Copyright statement
*FormatVersion: "4.1"
*FileVersion: "2.1"
*PCFileName: "IBM20470.PPD"
*LanguageVersion: English
*Product: "(IBM Personal Pageprinter)"
*PSVersion: "(47.0) 14"
*ModelName: "IBM 4216-020"
*NickName: "IBM 4216-020 v47.0"
*ShortNickName: "IBM Personal Pageprinter"

*% General Information and Defaults ===============
*ColorDevice: False
*DefaultColorSpace: Gray
*FreeVM: "432134"
*LanguageLevel: "1"
*VariablePaperSize: False
*FileSystem: False
*Throughput: "6"
*Password: "0"
*ExitServer: "
  count 0 eq  % is the password on the stack?
  { true }
  { dup    % potential password
    statusdict /checkpassword get exec not
  } ifelse
  {  %  if no password or not valid
    (WARNING : Cannot perform the exitserver command.) =
    (Password supplied is not valid.) =
    (Please contact the author of this software.) = flush
    quit
  } if
  serverdict /exitserver get exec
"
*End

*%Reset not available by PostScript software

*DefaultResolution: 300dpi
*?Resolution: "
save
  initgraphics
  0 0 moveto currentpoint matrix defaultmatrix transform
  0 72 lineto currentpoint matrix defaultmatrix transform
  3 -1 roll sub dup mul
  3 1 roll exch sub dup mul
  add sqrt round cvi
  (          ) cvs print (dpi) = flush
restore
"
*End

*% Halftone Information ===============
*ScreenFreq: "60.0"
*ScreenAngle: "45.0"
*DefaultScreenProc: Dot
*ScreenProc Dot: "
{abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1
sub }{dup mul exch dup mul add 1 exch sub }ifelse }
"
*End
*ScreenProc Line: "{ pop }"
*ScreenProc Ellipse: "{ dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub }"

*DefaultTransfer: Null
*Transfer Null: "{ }"
*Transfer Null.Inverse: "{ 1 exch sub }"

*% Paper Handling ===================
*% Use these entries to set paper size most of the time, unless there is
*% specific reason to use PageRegion.
*OpenUI *PageSize: PickOne
*OrderDependency: 30 AnySetup *PageSize
*DefaultPageSize: Letter
*PageSize Letter: "letter"
*PageSize Legal: "legal"
*PageSize A4: "a4"
*PageSize A5: "a5"
*PageSize B5: "b5"
*PageSize Statement: "statement"
*PageSize Envelope.612.792/Letter Envelope: "
 statusdict /envelopewidth 612 put statusdict /envelopeheight 792 put envelope"
*End
*PageSize Envelope.612.1008/Legal Envelope: "
 statusdict /envelopewidth 612 put statusdict /envelopeheight 1008 put envelope"
*End
*PageSize Envelope.396.612/Statement Envelope: "
 statusdict /envelopewidth 396 put statusdict /envelopeheight 612 put envelope"
*End
*PageSize Envelope.595.842/A4 Envelope: "
 statusdict /envelopewidth 595 put statusdict /envelopeheight 842 put envelope"
*End
*PageSize Envelope.420.595/A5 Envelope: "
 statusdict /envelopewidth 420 put statusdict /envelopeheight 595 put envelope"
*End
*PageSize Envelope.516.729/B5 Envelope: "
 statusdict /envelopewidth 516 put statusdict /envelopeheight 729 put envelope"
*End
*PageSize Envelope.567.903/Folio Envelope: "
 statusdict /envelopewidth 567 put statusdict /envelopeheight 903 put envelope"
*End
*PageSize Envelope.279.639/3 7/8 Inch x 8 7/8 Inch Envelope: "
 statusdict /envelopewidth 279 put statusdict /envelopeheight 639 put envelope"
*End
*PageSize Comm10/4 1/8 Inch x 9 1/2 Inch Envelope: "
 statusdict /envelopewidth 297 put statusdict /envelopeheight 684 put envelope"
*End
*PageSize Envelope.324.747/4 1/2 Inch x 10 3/8 Inch Envelope: "
 statusdict /envelopewidth 324 put statusdict /envelopeheight 747 put envelope"
*End
*PageSize Envelope.342.792/4 3/4 Inch x 11 Inch Envelope: "
 statusdict /envelopewidth 342 put statusdict /envelopeheight 792 put envelope"
*End
*PageSize Envelope.360.828/5 Inch x 11 1/2 Inch Envelope: "
 statusdict /envelopewidth 360 put statusdict /envelopeheight 828 put envelope"
*End
*PageSize Envelope.468.684/6 1/2 Inch x 9 1/2 Inch Envelope: "
 statusdict /envelopewidth 468 put statusdict /envelopeheight 684 put envelope"
*End
*PageSize Envelope.540.756/7 1/2 Inch x 10 1/2 Inch Envelope: "
 statusdict /envelopewidth 540 put statusdict /envelopeheight 756 put envelope"
*End
*PageSize Envelope.630.810/8 3/4 Inch x 11 1/4 Inch Envelope: "
 statusdict /envelopewidth 630 put statusdict /envelopeheight 810 put envelope"
*End
*?PageSize: "
save
12 dict
 dup /letter (Letter) put
 dup /legal (Legal) put
 dup /a4 (A4) put
 dup /a5 (A5) put
 dup /b5 (B5) put
 dup /statement (Statement) put
 dup /envelope (Envelope) put
 statusdict /papersize get exec
 3 1 roll  {get} stopped {(Unknown)}if
 exch  not { print (.Transverse) }if
 = flush
restore
"
*End
*CloseUI: *PageSize

*% These entries will set up the frame buffer. Usually used with manual feed.
*OpenUI *PageRegion: PickOne
*OrderDependency: 40 AnySetup *PageRegion
*DefaultPageRegion: Letter
*PageRegion Letter: "letter"
*PageRegion Legal: "legal"
*PageRegion A4: "a4"
*PageRegion A5: "a5"
*PageRegion B5: "b5"
*PageRegion Statement: "statement"
*PageRegion Envelope.612.792/Letter Envelope: "
 statusdict /envelopewidth 612 put statusdict /envelopeheight 792 put envelope"
*End
*PageRegion Envelope.612.1008/Legal Envelope: "
 statusdict /envelopewidth 612 put statusdict /envelopeheight 1008 put envelope"
*End
*PageRegion Envelope.396.612/Statement Envelope: "
 statusdict /envelopewidth 396 put statusdict /envelopeheight 612 put envelope"
*End
*PageRegion Envelope.595.842/A4 Envelope: "
 statusdict /envelopewidth 595 put statusdict /envelopeheight 842 put envelope"
*End
*PageRegion Envelope.420.595/A5 Envelope: "
 statusdict /envelopewidth 420 put statusdict /envelopeheight 595 put envelope"
*End
*PageRegion Envelope.516.729/B5 Envelope: "
 statusdict /envelopewidth 516 put statusdict /envelopeheight 729 put envelope"
*End
*PageRegion Envelope.567.903/Folio Envelope: "
 statusdict /envelopewidth 567 put statusdict /envelopeheight 903 put envelope"
*End
*PageRegion Envelope.279.639/3 7/8 Inch x 8 7/8 Inch Envelope: "
 statusdict /envelopewidth 279 put statusdict /envelopeheight 639 put envelope"
*End
*PageRegion Comm10/4 1/8 Inch x 9 1/2 Inch Envelope: "
 statusdict /envelopewidth 297 put statusdict /envelopeheight 684 put envelope"
*End
*PageRegion Envelope.324.747/4 1/2 Inch x 10 3/8 Inch Envelope: "
 statusdict /envelopewidth 324 put statusdict /envelopeheight 747 put envelope"
*End
*PageRegion Envelope.342.792/4 3/4 Inch x 11 Inch Envelope: "
 statusdict /envelopewidth 342 put statusdict /envelopeheight 792 put envelope"
*End
*PageRegion Envelope.360.828/5 Inch x 11 1/2 Inch Envelope: "
 statusdict /envelopewidth 360 put statusdict /envelopeheight 828 put envelope"
*End
*PageRegion Envelope.468.684/6 1/2 Inch x 9 1/2 Inch Envelope: "
 statusdict /envelopewidth 468 put statusdict /envelopeheight 684 put envelope"
*End
*PageRegion Envelope.540.756/7 1/2 Inch x 10 1/2 Inch Envelope: "
 statusdict /envelopewidth 540 put statusdict /envelopeheight 756 put envelope"
*End
*PageRegion Envelope.630.810/8 3/4 Inch x 11 1/4 Inch Envelope: "
 statusdict /envelopewidth 630 put statusdict /envelopeheight 810 put envelope"
*End
*CloseUI: *PageRegion

*% The following entries provide information about specific paper keywords.
*DefaultImageableArea: Letter
*ImageableArea Letter: "17 19 595 774 "
*ImageableArea Legal: "17 19 595 990 "
*ImageableArea A4: "18 19 577 823 "
*ImageableArea A5: "18 19 401 577 "
*ImageableArea B5: "18 19 481 690 "
*ImageableArea Statement: "18 19 378 594 "
*ImageableArea Envelope.612.792/Letter Envelope: "15 8 597 784 "
*ImageableArea Envelope.612.1008/Legal Envelope: "15 15 597 993 "
*ImageableArea Envelope.396.612/Statement Envelope: "14 8 382 604 "
*ImageableArea Envelope.595.842/A4 Envelope: "14 8 581 834 "
*ImageableArea Envelope.420.595/A5 Envelope: "15 8 405 588 "
*ImageableArea Envelope.516.729/B5 Envelope: "13 8 503 721 "
*ImageableArea Envelope.567.903/Folio Envelope: "14 8 581 928 "
*ImageableArea Envelope.279.639/3 7/8 Inch x 8 7/8 Inch Envelope: "13 15 266 624 "
*ImageableArea Comm10/4 1/8 Inch x 9 1/2 Inch Envelope: "15 15 282 669 "
*ImageableArea Envelope.324.747/4 1/2 Inch x 10 3/8 Inch Envelope: "17 15 307 732 "
*ImageableArea Envelope.342.792/4 3/4 Inch x 11 Inch Envelope: "14 15 328 777 "
*ImageableArea Envelope.360.828/5 Inch x 11 1/2 Inch Envelope: "15 15 344 813 "
*ImageableArea Envelope.468.684/6 1/2 Inch x 9 1/2 Inch Envelope: "16 15 452 669 "
*ImageableArea Envelope.540.756/7 1/2 Inch x 10 1/2 Inch Envelope: "13 15 527 741 "
*ImageableArea Envelope.630.810/8 3/4 Inch x 11 1/4 Inch Envelope: "16 15 614 795 "
*?ImageableArea: "
save
  /cvp {(                ) cvs print ( ) print } bind def
  /upperright {10000 mul floor 10000 div} bind def
  /lowerleft {10000 mul ceiling 10000 div} bind def
  newpath clippath pathbbox
  4 -2 roll exch 2 {lowerleft cvp} repeat
  exch 2 {upperright cvp} repeat flush
 restore
"
*End

*% These provide the physical dimensions of the paper (by keyword)
*DefaultPaperDimension: Letter
*PaperDimension Letter: "612 792"
*PaperDimension Legal: "612 1008"
*PaperDimension A4: "595 842"
*PaperDimension A5: "420 595"
*PaperDimension B5: "516 729"
*PaperDimension Statement: "396 612"
*PaperDimension Envelope.612.792/Letter Envelope: "612 792"
*PaperDimension Envelope.612.1008/Legal Envelope: "612 1008"
*PaperDimension Envelope.396.612/Statement Envelope: "396 612"
*PaperDimension Envelope.595.842/A4 Envelope: "595 842"
*PaperDimension Envelope.420.595/A5 Envelope: "420 595"
*PaperDimension Envelope.516.729/B5 Envelope: "516 729"
*PaperDimension Envelope.567.903/Folio Envelope: "567 903"
*PaperDimension Envelope.279.639/3 7/8 Inch x 8 7/8 Inch Envelope: "279 639"
*PaperDimension Comm10/4 1/8 Inch x 9 1/2 Inch Envelope: "297 684"
*PaperDimension Envelope.324.747/4 1/2 Inch x 10 3/8 Inch Envelope: "324 747"
*PaperDimension Envelope.342.792/4 3/4 Inch x 11 Inch Envelope: "342 792"
*PaperDimension Envelope.360.828/5 Inch x 11 1/2 Inch Envelope: "360 828"
*PaperDimension Envelope.468.684/6 1/2 Inch x 9 1/2 Inch Envelope: "468 684"
*PaperDimension Envelope.540.756/7 1/2 Inch x 10 1/2 Inch Envelope: "540 756"
*PaperDimension Envelope.630.810/8 3/4 Inch x 11 1/4 Inch Envelope: "630 810"

*RequiresPageRegion All: True
*OpenUI *InputSlot: PickOne
*OrderDependency: 20 AnySetup *InputSlot
*DefaultInputSlot: Cassette
*InputSlot Cassette: ""
*CloseUI: *InputSlot

*DefaultOutputOrder: Normal

*% Font Information =====================
*DefaultFont: Courier
*Font AvantGarde-Book: Standard "(001.002)" Standard ROM
*Font AvantGarde-BookOblique: Standard "(001.002)" Standard ROM
*Font AvantGarde-Demi: Standard "(001.002)" Standard ROM
*Font AvantGarde-DemiOblique: Standard "(001.002)" Standard ROM
*Font Bookman-Demi: Standard "(001.001)" Standard ROM
*Font Bookman-DemiItalic: Standard "(001.001)" Standard ROM
*Font Bookman-Light: Standard "(001.001)" Standard ROM
*Font Bookman-LightItalic: Standard "(001.001)" Standard ROM
*Font Courier: Standard "(001.004)" Standard ROM
*Font Courier-Bold: Standard "(001.004)" Standard ROM
*Font Courier-BoldOblique: Standard "(001.004)" Standard ROM
*Font Courier-Oblique: Standard "(001.004)" Standard ROM
*Font Emulatorfont: Special "(001.000)" Special ROM
*Font Emulatorfont-Bold: Special "(001.000)" Special ROM
*Font Garamond-Bold: Standard "(001.001)" Standard ROM
*Font Garamond-BoldItalic: Standard "(001.001)" Standard ROM
*Font Garamond-Light: Standard "(001.001)" Standard ROM
*Font Garamond-LightItalic: Standard "(001.001)" Standard ROM
*Font Helvetica: Standard "(001.002)" Standard ROM
*Font Helvetica-Black: Standard "(001.001)" Standard ROM
*Font Helvetica-BlackOblique: Standard "(001.001)" Standard ROM
*Font Helvetica-Bold: Standard "(001.002)" Standard ROM
*Font Helvetica-BoldOblique: Standard "(001.002)" Standard ROM
*Font Helvetica-Light: Standard "(001.001)" Standard ROM
*Font Helvetica-LightOblique: Standard "(001.001)" Standard ROM
*Font Helvetica-Oblique: Standard "(001.002)" Standard ROM
*Font Korinna-Bold: Standard "(001.001)" Standard ROM
*Font Korinna-KursivBold: Standard "(001.001)" Standard ROM
*Font Korinna-KursivRegular: Standard "(001.001)" Standard ROM
*Font Korinna-Regular: Standard "(001.001)" Standard ROM
*Font NewCenturySchlbk-Bold: Standard "(001.003)" Standard ROM
*Font NewCenturySchlbk-BoldItalic: Standard "(001.002)" Standard ROM
*Font NewCenturySchlbk-Italic: Standard "(001.002)" Standard ROM
*Font NewCenturySchlbk-Roman: Standard "(001.003)" Standard ROM
*Font Palatino-Bold: Standard "(001.001)" Standard ROM
*Font Palatino-BoldItalic: Standard "(001.001)" Standard ROM
*Font Palatino-Italic: Standard "(001.001)" Standard ROM
*Font Palatino-Roman: Standard "(001.001)" Standard ROM
*Font Symbol: Special "(001.003)" Special ROM
*Font Times-Bold: Standard "(001.002)" Standard ROM
*Font Times-BoldItalic: Standard "(001.004)" Standard ROM
*Font Times-Italic: Standard "(001.002)" Standard ROM
*Font Times-Roman: Standard "(001.002)" Standard ROM
*Font ZapfChancery-MediumItalic: Standard "(001.002)" Standard ROM
*Font ZapfDingbats: Special "(001.001)" Special ROM
*?FontQuery: "
save
/str (fonts/                              ) def
/st2 128 string def
{
  count 0 gt
  {
    dup st2 cvs (/) print print (:) print
    dup FontDirectory exch known
    {pop (Yes)}
    {
      statusdict /FontTranslateDict known not
      { pop (No) }
      {
        /tdict statusdict /FontTranslateDict get def
        dup tdict exch known not
        {pop (No)}
        {
          str exch tdict exch get dup length /len exch def
          6 exch putinterval str 0 len 6 add getinterval
          mark exch status
           {cleartomark (Yes)}{cleartomark (No)}ifelse
        }ifelse % name on stack known in tdict
      }ifelse % FontTranslateDict exists
   }ifelse % known in FontDirectory
   = flush
  }{ exit } ifelse % stack nonempty
} bind loop
(*) = flush
restore
"
*End
*?FontList: "
save
/str (fonts/                              ) def
FontDirectory { pop ==  } forall flush
statusdict /FontTranslateDict known {
  statusdict /FontTranslateDict get {
    FontDirectory 2 index known {
      pop pop
      }{
      str exch dup length /len exch def
      6 exch putinterval str 0 len 6 add getinterval
      mark exch status {cleartomark ==}{cleartomark pop}ifelse
      } ifelse % already in FontDirectory
    } forall % FontTranslateDict
  } if % FontTranslateDict known
(*) = flush
restore
"
*End

*% Printer Messages (verbatim from printer):
*Message: "%%[ exitserver: recording persistent data ]%%"
*Message: "%%[ Flushing: rest of job (to end-of-file) will be ignored ]%%"
*Message: "\FontName\ not found, using Courier."

*% Status (format: %%[ status: <one of these> ]%% )
*Status: "idle"
*Status: "busy"
*Status: "waiting"
*Status: "printing"
*Status: "PrinterError: not responding"
*Status: "PrinterError: requires attention"
*Status: "PrinterError: unknown"

*% Input Sources (format: %%[ status: <stat>; source: <one of these> ]%% )
*Source: "Centronics"

*% the following format reflects a bug in revision 14 that
*%   reverses the bracket and percents
*% Printer Error (format: [%% PrinterError: <one of these> %%])
*PrinterError: "not responding"
*PrinterError: "requires attention"
*PrinterError: "unknown"

*%DeviceAdjustMatrix: "[1 0 0 1 0 0]"

*% Color Separation Information =====================

*DefaultColorSep: ProcessBlack.60lpi.300dpi/60 lpi / 300 dpi

*InkName: ProcessBlack/Process Black
*InkName: CustomColor/Custom Color
*InkName: ProcessCyan/Process Cyan
*InkName: ProcessMagenta/Process Magenta
*InkName: ProcessYellow/Process Yellow

*% For 60 lpi / 300 dpi =====================================================

*ColorSepScreenAngle ProcessBlack.60lpi.300dpi/60 lpi / 300 dpi: "45"
*ColorSepScreenAngle CustomColor.60lpi.300dpi/60 lpi / 300 dpi: "45"
*ColorSepScreenAngle ProcessCyan.60lpi.300dpi/60 lpi / 300 dpi: "15"
*ColorSepScreenAngle ProcessMagenta.60lpi.300dpi/60 lpi / 300 dpi: "75"
*ColorSepScreenAngle ProcessYellow.60lpi.300dpi/60 lpi / 300 dpi: "0"

*ColorSepScreenFreq ProcessBlack.60lpi.300dpi/60 lpi / 300 dpi: "60"
*ColorSepScreenFreq CustomColor.60lpi.300dpi/60 lpi / 300 dpi: "60"
*ColorSepScreenFreq ProcessCyan.60lpi.300dpi/60 lpi / 300 dpi: "60"
*ColorSepScreenFreq ProcessMagenta.60lpi.300dpi/60 lpi / 300 dpi: "60"
*ColorSepScreenFreq ProcessYellow.60lpi.300dpi/60 lpi / 300 dpi: "60"

*% For 53 lpi / 300 dpi =====================================================

*ColorSepScreenAngle ProcessBlack.53lpi.300dpi/53 lpi / 300 dpi: "45.0"
*ColorSepScreenAngle CustomColor.53lpi.300dpi/53 lpi / 300 dpi: "45.0"
*ColorSepScreenAngle ProcessCyan.53lpi.300dpi/53 lpi / 300 dpi: "71.5651"
*ColorSepScreenAngle ProcessMagenta.53lpi.300dpi/53 lpi / 300 dpi: "18.4349"
*ColorSepScreenAngle ProcessYellow.53lpi.300dpi/53 lpi / 300 dpi: "0.0"

*ColorSepScreenFreq ProcessBlack.53lpi.300dpi/53 lpi / 300 dpi: "53.033"
*ColorSepScreenFreq CustomColor.53lpi.300dpi/53 lpi / 300 dpi: "53.033"
*ColorSepScreenFreq ProcessCyan.53lpi.300dpi/53 lpi / 300 dpi: "47.4342"
*ColorSepScreenFreq ProcessMagenta.53lpi.300dpi/53 lpi / 300 dpi: "47.4342"
*ColorSepScreenFreq ProcessYellow.53lpi.300dpi/53 lpi / 300 dpi: "50.0"

*% For "IBM Personal Pageprinter" version 47.0
*% Produced by "GETapd.ps" version 2.0 edit 48
*% Converted to meet 4.0 specification
*% Last Edit Date: Sep 15 1992
*% The byte count of this file should be exactly 017611 or 018056
*% depending on the filesystem it resides in.
*% end of PPD file for IBM 4216-020
