You dump a RastPort (drawing area) to a graphics capable printer by passing an IODRPReq to the device with PRD_DUMPRPORT set in io_Command along with several parameters that define how the dump is to be rendered. union printerIO *PrintIO struct RastPort *rastPort; struct ColorMap *colorMap; ULONG modeid; UWORD sx, sy, sw, sh; LONG dc, dr; UWORD s; PrintIO->iodrp.io_RastPort = rastPort; /* pointer to RastPort */ PrintIO->iodrp.io_ColorMap = colorMap; /* pointer to color map */ PrintIO->iodrp.io_Modes = modeid; /* ModeID of ViewPort */ PrintIO->iodrp.io_SrcX = sx; /* RastPort X offset */ PrintIO->iodrp.io_SrcY = sy; /* RastPort Y offset */ PrintIO->iodrp.io_SrcWidth = sw; /* print width from X offset */ PrintIO->iodrp.io_SrcHeight = sh; /* print height from Y offset */ PrintIO->iodrp.io_DestCols = dc; /* pixel width */ PrintIO->iodrp.io_DestRows = dr; /* pixel height */ PrintIO->iodrp.io_Special = s; /* flags */ PrintIO->iodrp.io_Command = PRD_DUMPRPORT; SendIO((struct IORequest *)request); The asynchronous SendIO() routine is used in this example instead of the synchronous DoIO(). A call to DoIO() does not return until the I/O request is finished. A call to SendIO() returns immediately. This allows your task to do other processing such as checking if the user wants to abort the I/O request. It should also be used when writing a lot of text or raw data with CMD_WRITE and PRD_RAWWRITE. Here is an overview of the possible arguments for the RastPort dump. io_RastPort A pointer to a RastPort. The RastPort's bitmap could be in Fast memory. io_ColorMap A pointer to a ColorMap. This could be a custom one. io_Modes The viewmode flags or the ModeID returned from GetVPModeID() (V36). io_SrcX X offset in the RastPort to start printing from. io_SrcY Y offset in the RastPort to start printing from. io_SrcWidth Width of the RastPort to print from io_SrcX. io_SrcHeight Height of the RastPort to print from io_SrcY. io_DestCols Width of the dump in printer pixels. io_DestRows Height of the dump in printer pixels. io_Special Flag bits (described below). Looking at these arguments you can see the enormous flexibility the printer device offers for dumping a RastPort. The RastPort pointed to could be totally custom defined. This flexibility means it is possible to build a BitMap with the resolution of the printer. This would result in having one pixel of the BitMap correspond to one pixel of the printer. In other words, only the resolution of the output device would limit the final result. With 12 bit planes and a custom ColorMap, you could dump 4096 colors - without the HAM limitation - to a suitable printer. The offset, width and height parameters allow dumps of any desired part of the picture. Finally the ViewPort mode, io_DestCols, io_DestRows parameters, together with the io_Special flags define how the dump will appear on paper and aid in getting the correct aspect ratio. Printer Special Flags Printing With Corrected Aspect Ratio Strip Printing Additional Notes About Graphic Dumps