type
    AreaInfo_t = struct {
	*uint ai_VctrTbl;
	*uint ai_VctrPtr;
	*ushort ai_FlagTbl;
	*ushort ai_FlagPtr;
	uint ai_Count;
	uint ai_MaxCount;
	uint ai_FirstX, ai_FirstY;
    },

    TmpRas_t = struct {
	PLANEPTR tr_RasPtr;
	ulong tr_Size;
    },

    GelsInfo_t = struct {
	ushort gi_sprRsrvd;
	ushort gi_Flags;
	*VSprite_t gi_gelHead, gi_gelTail;
	*[8]uint gi_nextLine;
	*[8]*uint gi_lastColor;
	*collTable_t gi_collHandler;
	uint gi_leftmost, gi_rightmost, gi_topmost, gi_bottommost;
	*byte gi_firstBlissObj, gi_lastBlissObj;
    },

    RastPort_t = struct {
	*Layer_t rp_Layer;
	*BitMap_t rp_BitMap;
	*uint rp_AreaPtrn;
	*TmpRas_t rp_TmpRas;
	*AreaInfo_t rp_AreaInfo;
	*GelsInfo_t rp_GelsInfo;
	ushort rp_Mask;
	ushort rp_FgPen, rp_BgPen, rp_AOlPen;
	ushort rp_DrawMode;
	short rp_AreaPtSz;
	ushort rp_linpatcnt;
	ushort rp_dummy;
	uint rp_Flags;
	uint rp_LinePtrn;
	int rp_cp_x, rp_cp_y;
	[8]ushort rp_minterms;
	uint rp_PenWidth, rp_PenHeight;
	*TextFont_t rp_Font;
	ushort rp_AlgoStype, rp_TxFlags;
	uint rp_TxHeight, rp_TxWidth, rp_TxBaseLine, rp_txSpacing;
	*byte rp_RP_User;
	[2]ulong rp_longreserved;
	[7]uint rp_wordreserved;
	[8]byte rp_reserved;
    };

ushort
    JAM1	= 0,
    JAM2	= 1,
    COMPLEMENT	= 2,
    INVERSVID	= 4,

    FRST_DOT	= 0x01,
    ONE_DOT	= 0x02,
    DBUFFER	= 0x04,

    AREAOUTLINE = 0x08,
    NOCROSSFILL = 0x20;

extern
    AreaCircle(*RastPort_t rp; uint cx, xy, r)bool,
    AreaDraw(*RastPort_t rp; ulong x, y)bool,
    AreaEllipse(*RastPort_t rp; ulong cx, xy, a, b)bool,
    AreaEnd(*RastPort_t rp)bool,
    AreaMove(*RastPort_t rp; ulong x, y)bool,
    BltBitMapRastPort(*BitMap_t src; ulong srcX, srcY;
		      *RastPort_t dst; ulong dstX, dstY;
		      ulong sizX, sizY, minTerm)void,
    BltClr(*byte ptr; ulong byteCount, flags)void,
    BltMaskBitMapRastPort(*BitMap_t src; ulong srcX, srcY;
			  *RastPort_t dst; ulong dstX, dstY;
			  ulong sizX, sizY, minTerm;
			  *uint blitMask)void,
    BltPattern(*RastPort_t rp; ulong mask, x1, y1, maxx, maxy, bytecnt)void,
    BltTemplate(*uint src; ulong srcX, srcMod;
		*RastPort_t rp; ulong dstX, dstY, sizX, sizY)void,
    BOUNDARY_OFF(*RastPort_t rp)void,
    ClearEOL(*RastPort_t rp)void,
    ClearScreen(*RastPort_t rp)void,
    ClipBlit(*RastPort_t src; ulong srcX, srcY;
	     *RastPort_t dst; ulong dstX, dstY;
	     ulong sizX, sizY, minterm)ulong,
    Draw(*RastPort_t rp; ulong x, y)void,
    DrawCircle(*RastPort_t rp; uint cx, cy, r)void,
    DrawEllipse(*RastPort_t rp; ulong cx, cy, a, b)void,
    Flood(*RastPort_t rp; ulong mode, x, y)bool,
    InitArea(*AreaInfo_t areaInfo; *byte buffer; ulong maxVectors)void,
    InitRastPort(*RastPort_t rp)void,
    InitTmpRas(*TmpRas_t tmpRas; PLANEPTR buffer; ulong size)void,
    Move(*RastPort_t rp; ulong x, y)void,
    PolyDraw(*RastPort_t rp; ulong count; *uint array)void,
    ReadPixel(*RastPort_t rp; ulong x, y)short,
    RectFill(*RastPort_t rp; ulong xmin, ymin, xmax, ymax)void,
    ScrollRaster(*RastPort_t rp; ulong dx, dy, xmin, ymin, xmax, ymax)void,
    SetAfPt(*RastPort_t rp; *uint pattern; short size)void,
    SetAPen(*RastPort_t rp; ulong pen)void,
    SetBPen(*RastPort_t rp; ulong pen)void,
    SetDrMd(*RastPort_t rp; ulong mode)void,
    SetDrPt(*RastPort_t rp; uint pattern)void,
    SetFont(*RastPort_t rp; *TextFont_t textFont)void,
    SetOPen(*RastPort_t rp; ushort pen)void,
    SetRast(*RastPort_t rp; ulong pen)void,
    SetWrMsk(*RastPort_t rp; ushort mask)void,
    Text(*RastPort_t rp; *char string; ulong count)void,
    TextLength(*RastPort_t rp; *char string; ulong count)ulong,
    WritePixel(*RastPort_t rp; ulong x, y)bool;
