*%
*% Copyright (c) 1997 - 1999 Microsoft Corporation
*% All Rights Reserved.
*%
*GPDSpecVersion: "1.0"
*GPDFileVersion: "1.00"
*GPDFileName: "IB5587HJ.GPD"
*Include: "STDNAMES.GPD"
*CodePage: 1252
*ModelName: "IBM 5587-H01"
*MasterUnits: PAIR(1440, 1440)
*ResourceDLL: "PAGESRES.DLL"
*PrinterType: PAGE
*MaxCopies: 255
*FontCartSlots: 1

*% ========== Orientation ==========
*Feature: Orientation
{
    *rcNameID: =ORIENTATION_DISPLAY
    *DefaultOption: PORTRAIT
    *Option: PORTRAIT
    {
        *rcNameID: =PORTRAIT_DISPLAY
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.3
            *Cmd: "<1B>~P<000100>"
        }
    }
    *Option: LANDSCAPE_CC270
    {
        *rcNameID: =LANDSCAPE_DISPLAY
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.3
            *Cmd: "<1B>~P<000103>"
        }
    }
}

*% ========== InputBin ==========
*Feature: InputBin
{
    *rcNameID: =PAPER_SOURCE_DISPLAY
    *DefaultOption: AUTO
    *Option: AUTO
    {
        *rcNameID: =AUTO_DISPLAY
        *switch: PaperSize
        {
            *case: A3
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~F<00050000110000>"
                }
            }
            *case: A4
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~F<00050000130000>"
                }
            }
            *case: A5
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~F<00050000150000>"
                }
            }
            *case: B4
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~F<00050000120000>"
                }
            }
            *case: B5
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~F<00050000140000>"
                }
            }
            *case: LETTER
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~F<00050000180000>"
                }
            }
            *case: JAPANESE_POSTCARD
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~F<000500001A0000>"
                }
            }
            *case: LEGAL
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~F<00050000190000>"
                }
            }
            *case: CUSTOMSIZE
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~F<00050000010000>"
                }
            }
        }
    }
    *Option: Option1
    {
        *rcNameID: 270
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.2
            *Cmd: "<1B>~F<00050000010000>"
        }
    }
    *Option: Option2
    {
        *rcNameID: 271
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.2
            *Cmd: "<1B>~F<00050000000000>"
        }
    }
}

*% ========== Resolution ==========
*Feature: Resolution
{
    *rcNameID: =RESOLUTION_DISPLAY
    *DefaultOption: Option1
    *Option: Option1
    {
        *Name: "240 x 240 dots per inch"
        *DPI: PAIR(240, 240)
        *TextDPI: PAIR(240, 240)
        *MinStripBlankPixels: 32
        EXTERN_GLOBAL: *StripBlanks: LIST(ENCLOSED,TRAILING)
        EXTERN_GLOBAL: *SendMultipleRows?: TRUE
        *SpotDiameter: 100
        *Command: CmdSendBlockData { *Cmd : "<1B>~<84>" %m{NumOfDataBytes + 5}"<00>" %m{(RasterDataWidthInBytes * 8) } %m{RasterDataHeightInPixels }
+  }
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.11
            *CallbackID: 12
        }
    }
}

*% ========== PaperSize ==========
*Feature: PaperSize
{
    *rcNameID: =PAPER_SIZE_DISPLAY
    *DefaultOption: A4
    *Option: A3
    {
        *rcNameID: =A3_DISPLAY
        *PrintableArea: PAIR(16260, 23244)
        *PrintableOrigin: PAIR(288, 288)
        *switch: Orientation
        {
            *case: PORTRAIT
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~8<0009011C011C>?<8E>Z<CC02>"
                }
            }
            *case: LANDSCAPE_CC270
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~8<0009011C011C>Z<CC>?<8E02>"
                }
            }
        }
    }
    *Option: A4
    {
        *rcNameID: =A4_DISPLAY
        *PrintableArea: PAIR(11334, 16260)
        *PrintableOrigin: PAIR(288, 288)
        *switch: Orientation
        {
            *case: PORTRAIT
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~8<0009011C011C>,J?<8E02>"
                }
            }
            *case: LANDSCAPE_CC270
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~8<0009011C011C>?<8E>,J<02>"
                }
            }
        }
    }
    *Option: A5
    {
        *rcNameID: =A5_DISPLAY
        *PrintableArea: PAIR(7824, 11334)
        *PrintableOrigin: PAIR(288, 288)
        *switch: Orientation
        {
            *case: PORTRAIT
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~8<0009011C011C1E8F>,J<02>"
                }
            }
            *case: LANDSCAPE_CC270
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~8<0009011C011C>,J<1E8F02>"
                }
            }
        }
    }
    *Option: B4
    {
        *rcNameID: =B4_DISPLAY
        *PrintableArea: PAIR(13998, 20064)
        *PrintableOrigin: PAIR(288, 288)
        *switch: Orientation
        {
            *case: PORTRAIT
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~8<0009011C011C>6<B3>Ne<02>"
                }
            }
            *case: LANDSCAPE_CC270
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~8<0009011C011C>Ne6<B302>"
                }
            }
        }
    }
    *Option: B5
    {
        *rcNameID: =B5_DISPLAY
        *PrintableArea: PAIR(9750, 13998)
        *PrintableOrigin: PAIR(288, 288)
        *switch: Orientation
        {
            *case: PORTRAIT
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~8<0009011C011C>&<17>6<B302>"
                }
            }
            *case: LANDSCAPE_CC270
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~8<0009011C011C>6<B3>&<1702>"
                }
            }
        }
    }
    *Option: LETTER
    {
        *rcNameID: =LETTER_DISPLAY
        *PrintableArea: PAIR(11664, 15264)
        *PrintableOrigin: PAIR(288, 288)
        *switch: Orientation
        {
            *case: PORTRAIT
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~8<0009011C011C>-<99>;<A902>"
                }
            }
            *case: LANDSCAPE_CC270
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~8<0009011C011C>;<A9>-<9902>"
                }
            }
        }
    }
    *Option: JAPANESE_POSTCARD
    {
        *rcNameID: =JAPANESE_POSTCARD_DISPLAY
        *PrintableArea: PAIR(5100, 7824)
        *PrintableOrigin: PAIR(288, 288)
        *switch: Orientation
        {
            *case: PORTRAIT
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~8<0009011C011C13EE1E8F02>"
                }
            }
            *case: LANDSCAPE_CC270
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~8<0009011C011C1E8F13EE02>"
                }
            }
        }
    }
    *Option: LEGAL
    {
        *rcNameID: =LEGAL_DISPLAY
        *PrintableArea: PAIR(11664, 19584)
        *PrintableOrigin: PAIR(288, 288)
        *switch: Orientation
        {
            *case: PORTRAIT
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~8<0009011C011C>-<99>L<8902>"
                }
            }
            *case: LANDSCAPE_CC270
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~8<0009011C011C>L<89>-<9902>"
                }
            }
        }
    }
    *Option: CUSTOMSIZE
    {
        *rcNameID: =USER_DEFINED_SIZE_DISPLAY
        *MinSize: PAIR(2880, 2880)
        *MaxSize: PAIR(25200, 32767)
        *MaxPrintableWidth: 24632
        *CustPrintableSizeX: %d{PhysPaperWidth-568}
        *CustPrintableSizeY: %d{PhysPaperLength-568}
        *CustPrintableOriginX: %d{284}
        *CustPrintableOriginY: %d{284}
        *CustCursorOriginX: %d{284}
        *CustCursorOriginY: %d{284}
        *switch: Orientation
        {
            *case: PORTRAIT
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~8<0009011C011C>"
+%m{(PhysPaperWidth-568)}
+%m{(PhysPaperLength-568)}
+"<02>"
                }
            }
            *case: LANDSCAPE_CC270
            {
                *Command: CmdSelect
                {
                    *Order: DOC_SETUP.5
                    *Cmd: "<1B>~8<0009011C011C>"
+%m{(PhysPaperLength-568)}
+%m{(PhysPaperWidth-568)}
+"<02>"
                }
            }
        }
    }
}

*% ========== ImageControl ==========
*Feature: ImageControl
{
    *rcNameID: =IMAGECONTROL_DISPLAY
    *DefaultOption: Option1
    *Option: Option1
    {
        *rcNameID: 283
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.4
            *Cmd: "<1B>~Q<000100>"
        }
    }
    *Option: Option2
    {
        *rcNameID: 285
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.4
            *Cmd: "<1B>~Q<000101>"
        }
    }
}

*% ========== Halftone ==========
*Feature: Halftone
{
    *rcNameID: =HALFTONING_DISPLAY
    *DefaultOption: HT_PATSIZE_AUTO
    *Option: HT_PATSIZE_AUTO
    {
        *rcNameID: =HT_AUTO_SELECT_DISPLAY
    }
    *Option: HT_PATSIZE_SUPERCELL_M
    {
        *rcNameID: =HT_SUPERCELL_DISPLAY
    }
    *Option: HT_PATSIZE_6x6_M
    {
        *rcNameID: =HT_DITHER6X6_DISPLAY
    }
    *Option: HT_PATSIZE_8x8_M
    {
        *rcNameID: =HT_DITHER8X8_DISPLAY
    }
}

*% ========== Memory ==========
*Feature: Memory
{
    *rcNameID: =PRINTER_MEMORY_DISPLAY
    *DefaultOption: 1024KB
    *Option: 1024KB
    {
        *Name: "1MB"
        *MemoryConfigKB: PAIR(1024, 700)
    }
}

*% ========== Job Control Command ==========
*Command: CmdStartDoc
{
    *Order: DOC_SETUP.1
    *Cmd: "<1B>~<010000>"
}
*Command: CmdEndJob
{
    *Order: JOB_FINISH.1
    *Cmd: "<1B>~<010000>"
}
*Command: CmdCopies
{
    *Order: DOC_SETUP.6
    *Cmd: "<1B>~3<000201>" %c[1,255]{NumOfCopies}
}

*% ========== Printer Capabilities ==========
*RotateCoordinate?: FALSE
*RotateRaster?: TRUE
*RotateFont?: TRUE
*TextCaps: LIST(TC_OP_STROKE,TC_EA_DOUBLE,TC_IA_ABLE,TC_UA_ABLE,TC_RA_ABLE)
*MemoryUsage: LIST(FONT)

*% ========== Cursor Control ==========
*CursorXAfterCR: AT_CURSOR_X_ORIGIN
*XMoveThreshold: 0
*YMoveThreshold: 0
*XMoveUnit: 1440
*YMoveUnit: 1440
*Command: CmdXMoveAbsolute { *Cmd : "<1B>~<1C000305>" %m{DestX } }
*Command: CmdXMoveRelRight { *Cmd : "<1B>~<1C000306>" %m{DestXRel } }
*Command: CmdYMoveAbsolute
{
    *CallbackID: 2
    *Params: LIST(DestY)
}
*Command: CmdYMoveRelDown
{
    *CallbackID: 3
    *Params: LIST(DestYRel)
}
*Command: CmdSetLineSpacing { *Cmd : "<1B>%%9" %m{(LinefeedSpacing / 12) } }
*Command: CmdCR { *Cmd : "<0D>" }
*Command: CmdLF { *Cmd : "<0A>" }
*Command: CmdFF { *Cmd : "<0C>" }
*Command: CmdBackSpace { *Cmd : "<08>" }
*EjectPageWithFF?: TRUE

*% ========== Raster Data Emission ==========
*OutputDataFormat: H_BYTE
*OptimizeLeftBound?: TRUE
*CursorXAfterSendBlockData: AT_GRXDATA_ORIGIN
*CursorYAfterSendBlockData: NO_MOVE

*% ========== Device Fonts ==========
*DefaultFont: 1
*DefaultCTT: 0
*CharPosition: BASELINE
*DeviceFonts: LIST(1,2,3,4)
*FontCartridge: FC1
{
    *rcCartridgeNameID: 280
    *Fonts: LIST(5,6)
}

*% ========== Font Simulation ==========
*Command: CmdBoldOn { *Cmd : "<1B>~<0E000117>" }
*Command: CmdBoldOff { *Cmd : "<1B>~<0E000118>" }
*Command: CmdItalicOn { *Cmd : "<1B>~v<000E1000000000000000000103000000>" }
*Command: CmdItalicOff { *Cmd : "<1B>~v<000E0000000000000000000000000000>" }
*Command: CmdUnderlineOn { *Cmd : "<1B>~<11000101>" }
*Command: CmdUnderlineOff { *Cmd : "<1B>~<11000100>" }

*%========== RectFill ==========
*MinGrayFill: 1
*MaxGrayFill: 1
*% *MinGrayFill: 1
*% *MaxGrayFill: 100
*Command: CmdSetRectWidth
{
	*CallbackID: 30
	*Params: LIST(RectXSize)
}
*Command: CmdSetRectHeight
{
	*CallbackID: 31
	*Params: LIST(RectYSize)
}
*% *Command: CmdRectBlackFill { *CallbackID: 32 }
*Command: CmdRectWhiteFill { *CallbackID: 33 }