(**************************************************************************)
(*                                                                        *)
(* Definition Module (C) Copyright 1994 Marcel Timmermans.                *)
(* Date     : 19 Feb 1994                                                 *)
(* Language : Modula-2                                                    *)
(*                                                                        *)
(**************************************************************************)

DEFINITION MODULE GraphicsL {"graphics.library",33};

FROM SYSTEM IMPORT ADDRESS,BITSET,BYTE,LONGSET,WORD;

FROM Hardware IMPORT
 BltnodePtr;

FROM UtilityD IMPORT
 TagItemPtr;

IMPORT
 GraphicsD,Reg;

VAR
 graphicsBase:GraphicsD.GfxBasePtr;

(*------ BitMap primitives ------*)

PROCEDURE BltBitMap(
           srcBitMap{Reg.A0}:GraphicsD.BitMapPtr;
           srcX{Reg.D0}:INTEGER;
           srcY{Reg.D1}:INTEGER;
           dstBitMap{Reg.A1}:GraphicsD.BitMapPtr;
           dstX{Reg.D2}:INTEGER;
           dstY{Reg.D3}:INTEGER;
           sizeX{Reg.D4}:INTEGER;
           sizeY{Reg.D5}:INTEGER;
           minterm{Reg.D6}:SHORTCARD;
           mask{Reg.D7}:SHORTCARD;
           tempA{Reg.A2}:ADDRESS):LONGCARD; CODE -30;


PROCEDURE BltTemplate(
           srcTemplate{Reg.A0}:ADDRESS;
           srcX{Reg.D0}:INTEGER;
           srcMod{Reg.D1}:INTEGER;
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           dstX{Reg.D2}:INTEGER;
           dstY{Reg.D3}:INTEGER;
           sizeX{Reg.D4}:INTEGER;
           sizeY{Reg.D5}:INTEGER); CODE -36;

(*------ Text routines ------*)

PROCEDURE ClearEOL(rp{Reg.A1}:GraphicsD.RastPortPtr); CODE -42;

PROCEDURE ClearScreen(rp{Reg.A1}:GraphicsD.RastPortPtr); CODE -48;

PROCEDURE TextLength(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           string{Reg.A0}:ADDRESS;
           count{Reg.D0}:INTEGER):INTEGER; CODE -54;

PROCEDURE Text(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           string{Reg.A0}:ADDRESS;
           count{Reg.D0}:LONGINT); CODE -60;

PROCEDURE SetFont(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           font{Reg.A0}:GraphicsD.TextFontPtr); CODE -66;

PROCEDURE OpenFont(
           textAttr{Reg.A0}:GraphicsD.TextAttrPtr):GraphicsD.TextFontPtr; CODE -72;

PROCEDURE CloseFont(font{Reg.A1}:GraphicsD.TextFontPtr); CODE -78;

PROCEDURE AskSoftStyle(
           rp{Reg.A1}:GraphicsD.RastPortPtr):GraphicsD.FontStyleSet; CODE -84;

PROCEDURE SetSoftStyle(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           style{Reg.D0}:GraphicsD.FontStyleSet;
           enable{Reg.D1}:GraphicsD.FontStyleSet):GraphicsD.FontStyleSet; CODE -90;

(*------	Gels routines ------*)

PROCEDURE AddBob(
           Bob{Reg.A0}:GraphicsD.BobPtr;
           rp{Reg.A1}:GraphicsD.RastPortPtr); CODE -96;

PROCEDURE AddVSprite(
           vs{Reg.A0}:GraphicsD.VSpritePtr;
           rp{Reg.A1}:GraphicsD.RastPortPtr); CODE -102;

PROCEDURE DoCollision(rp{Reg.A1}:GraphicsD.RastPortPtr); CODE -108;

PROCEDURE DrawGList(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           vp{Reg.A0}:GraphicsD.ViewPortPtr); CODE -114;

PROCEDURE InitGels(
           head{Reg.A0}:GraphicsD.VSpritePtr;
           tail{Reg.A1}:GraphicsD.VSpritePtr;
           gInfo{Reg.A2}:GraphicsD.GelsInfoPtr); CODE -120;

PROCEDURE InitMasks(vs{Reg.A0}:GraphicsD.VSpritePtr); CODE -126;

PROCEDURE RemIBob(
           bob{Reg.A0}:GraphicsD.BobPtr;
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           vp{Reg.A2}:GraphicsD.ViewPortPtr); CODE -132;

PROCEDURE RemVSprite(vs{Reg.A0}:GraphicsD.VSpritePtr); CODE -138;

PROCEDURE SetCollision(
           num{Reg.D0}:LONGCARD;
           routine{Reg.A0}:ADDRESS;
           gInfo{Reg.A1}:GraphicsD.GelsInfoPtr); CODE -144;

PROCEDURE SortGList(rp{Reg.A1}:GraphicsD.RastPortPtr); CODE -150;

PROCEDURE AddAnimOb(
           anOb{Reg.A0}:GraphicsD.AnimObPtr;
           VAR anKey{Reg.A1}:GraphicsD.AnimObPtr;
           rp{Reg.A2}:GraphicsD.RastPortPtr); CODE -156;

PROCEDURE Animate(
           VAR anKey{Reg.A0}:GraphicsD.AnimObPtr;
           rp{Reg.A1}:GraphicsD.RastPortPtr); CODE -162;

PROCEDURE GetGBuffers(
           anOb{Reg.A0}:GraphicsD.AnimObPtr;
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           db{Reg.D0}:BOOLEAN):BOOLEAN; CODE -168;

PROCEDURE InitGMasks(anOb{Reg.A0}:GraphicsD.AnimObPtr); CODE -174;

(*------	General graphics routines ------*)

PROCEDURE DrawEllipse(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           cX{Reg.D0}:INTEGER;
           cY{Reg.D1}:INTEGER;
           a{Reg.D2}:INTEGER;
           b{Reg.D3}:INTEGER); CODE -180;

PROCEDURE AreaEllipse(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           cX{Reg.D0}:INTEGER;
           cY{Reg.D1}:INTEGER;
           a{Reg.D2}:INTEGER;
           b{Reg.D3}:INTEGER):BOOLEAN; CODE -186;

PROCEDURE LoadRGB4(
           vp{Reg.A0}:GraphicsD.ViewPortPtr;
           colors{Reg.A1}:ADDRESS;
           count{Reg.D0}:INTEGER); CODE -192;

PROCEDURE InitRastPort(VAR rp{Reg.A1}:GraphicsD.RastPort); CODE -198;

PROCEDURE InitVPort(VAR vp{Reg.A0}:GraphicsD.ViewPort); CODE -204;

PROCEDURE MrgCop(view{Reg.A1}:GraphicsD.ViewPtr); CODE -210;

PROCEDURE MakeVPort(
           view{Reg.A0}:GraphicsD.ViewPtr;
           viewport{Reg.A1}:GraphicsD.ViewPortPtr); CODE -216;

PROCEDURE LoadView(view{Reg.A1}:GraphicsD.ViewPtr); CODE -222;

PROCEDURE WaitBlit(); CODE -228;

PROCEDURE SetRast(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           pen{Reg.D0}:CARDINAL); CODE -234;

PROCEDURE Move(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           x{Reg.D0}:INTEGER;
           y{Reg.D1}:INTEGER); CODE -240;

PROCEDURE Draw(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           x{Reg.D0}:INTEGER;
           y{Reg.D1}:INTEGER); CODE -246;

PROCEDURE AreaMove(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           x{Reg.D0}:INTEGER;
           y{Reg.D1}:INTEGER):BOOLEAN; CODE -252;

PROCEDURE AreaDraw(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           x{Reg.D0}:INTEGER;
           y{Reg.D1}:INTEGER):BOOLEAN; CODE -258;

PROCEDURE AreaEnd(rp{Reg.A1}:GraphicsD.RastPortPtr):BOOLEAN; CODE -264;

PROCEDURE WaitTOF(); CODE -270;

PROCEDURE QBlit(bp{Reg.A1}:BltnodePtr); CODE -276;

PROCEDURE InitArea(
           VAR areainfo{Reg.A0}:GraphicsD.AreaInfo;
           buffer{Reg.A1}:ADDRESS;
           maxvectors{Reg.D0}:INTEGER); CODE -282;

PROCEDURE SetRGB4(
           vp{Reg.A0}:GraphicsD.ViewPortPtr;
           n{Reg.D0}:CARDINAL;
           r{Reg.D1}:CARDINAL;
           g{Reg.D2}:CARDINAL;
           b{Reg.D3}:CARDINAL); CODE -288;

PROCEDURE QBSBlit(bsp{Reg.A1}:BltnodePtr); CODE -294;

PROCEDURE BltClear(
           memBlock{Reg.A1}:ADDRESS;
           bytecount{Reg.D0}:LONGCARD;
           flags{Reg.D1}:LONGSET); CODE -300;

PROCEDURE RectFill(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           xMin{Reg.D0}:INTEGER;
           yMin{Reg.D1}:INTEGER;
           xMax{Reg.D2}:INTEGER;
           yMax{Reg.D3}:INTEGER); CODE -306;

PROCEDURE BltPattern(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           mask{Reg.A0}:ADDRESS;
           xl{Reg.D0}:INTEGER;
           yl{Reg.D1}:INTEGER;
           maxX{Reg.D2}:INTEGER;
           maxY{Reg.D3}:INTEGER;
           bytecnt{Reg.D4}:INTEGER); CODE -312;

PROCEDURE ReadPixel(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           x{Reg.D0}:INTEGER;
           y{Reg.D1}:INTEGER):LONGINT; CODE -318;

PROCEDURE WritePixel(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           x{Reg.D0}:INTEGER;
           y{Reg.D1}:INTEGER):BOOLEAN; CODE -324;

PROCEDURE Flood(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           mode{Reg.D2}:LONGCARD;
           x{Reg.D0}:INTEGER;
           y{Reg.D1}:INTEGER):BOOLEAN; CODE -330;

PROCEDURE PolyDraw(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           count{Reg.D0}:INTEGER;
           array{Reg.A0}:ADDRESS); CODE -336;

PROCEDURE SetAPen(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           pen{Reg.D0}:CARDINAL); CODE -342;

PROCEDURE SetBPen(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           pen{Reg.D0}:CARDINAL); CODE -348;

PROCEDURE SetDrMd(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           mode{Reg.D0}:GraphicsD.DrawModeSet); CODE -354;

PROCEDURE InitView(VAR view{Reg.A1}:GraphicsD.View); CODE -360;

PROCEDURE CBump(c{Reg.A1}:GraphicsD.UCopListPtr); CODE -366;

PROCEDURE CMove(
           c{Reg.A1}:GraphicsD.UCopListPtr;
           a{Reg.D0}:ADDRESS;
           v{Reg.D1}:INTEGER); CODE -372;

PROCEDURE CWait(
           c{Reg.A1}:GraphicsD.UCopListPtr;
           v{Reg.D0}:INTEGER;
           h{Reg.D1}:INTEGER); CODE -378;

PROCEDURE VBeamPos():LONGINT; CODE -384;

PROCEDURE InitBitMap(
           VAR bm{Reg.A0}:GraphicsD.BitMap;
           depth{Reg.D0}:INTEGER;
           width{Reg.D1}:LONGCARD;
           height{Reg.D2}:LONGCARD); CODE -390;

PROCEDURE ScrollRaster(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           dx{Reg.D0}:INTEGER;
           dy{Reg.D1}:INTEGER;
           xMin{Reg.D2}:INTEGER;
           yMin{Reg.D3}:INTEGER;
           xMax{Reg.D4}:INTEGER;
           yMax{Reg.D5}:INTEGER); CODE -396;

PROCEDURE WaitBOVP(vp{Reg.A0}:GraphicsD.ViewPortPtr); CODE -402;

PROCEDURE GetSprite(
           sprite{Reg.A0}:GraphicsD.SimpleSpritePtr;
           pick{Reg.D0}:INTEGER):INTEGER; CODE -408;

PROCEDURE FreeSprite(num{Reg.D0}:INTEGER); CODE -414;

PROCEDURE ChangeSprite(
           vp{Reg.A0}:GraphicsD.ViewPortPtr;
           s{Reg.A1}:GraphicsD.SimpleSpritePtr;
           newdata{Reg.A2}:ADDRESS); CODE -420;

PROCEDURE MoveSprite(
           vp{Reg.A0}:GraphicsD.ViewPortPtr;
           sprite{Reg.A1}:GraphicsD.SimpleSpritePtr;
           x{Reg.D0}:INTEGER;
           y{Reg.D1}:INTEGER); CODE -426;

PROCEDURE LockLayerRom(layer{Reg.A5}:GraphicsD.LayerPtr); CODE -432;

PROCEDURE UnlockLayerRom(layer{Reg.A5}:GraphicsD.LayerPtr); CODE -438;

PROCEDURE SyncSBitMap(layer{Reg.A0}:GraphicsD.LayerPtr); CODE -444;

PROCEDURE CopySBitMap(layer{Reg.A0}:GraphicsD.LayerPtr); CODE -450;

PROCEDURE OwnBlitter(); CODE -456;

PROCEDURE DisownBlitter(); CODE -462;

PROCEDURE InitTmpRas(
           VAR tmpras{Reg.A0}:GraphicsD.TmpRas;
           buffer{Reg.A1}:ADDRESS;
           size{Reg.D0}:LONGINT); CODE -468;

PROCEDURE AskFont(
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           textAttr{Reg.A0}:GraphicsD.TextAttrPtr); CODE -474;

PROCEDURE AddFont(textFont{Reg.A1}:GraphicsD.TextFontPtr); CODE -480;

PROCEDURE RemFont(textFont{Reg.A1}:GraphicsD.TextFontPtr); CODE -486;

PROCEDURE AllocRaster(
           width{Reg.D0}:CARDINAL;
           height{Reg.D1}:CARDINAL):ADDRESS; CODE -492;

PROCEDURE FreeRaster(
           p{Reg.A0}:ADDRESS;
           width{Reg.D0}:CARDINAL;
           height{Reg.D1}:CARDINAL); CODE -498;

PROCEDURE AndRectRegion(
           region{Reg.A0}:GraphicsD.RegionPtr;
           rectangle{Reg.A1}:GraphicsD.RectanglePtr); CODE -504;

PROCEDURE OrRectRegion(
           region{Reg.A0}:GraphicsD.RegionPtr;
           rectangle{Reg.A1}:GraphicsD.RectanglePtr):BOOLEAN; CODE -510;

PROCEDURE NewRegion():GraphicsD.RegionPtr; CODE -516;

PROCEDURE ClearRectRegion(
           region{Reg.A0}:GraphicsD.RegionPtr;
           rectangle{Reg.A1}:GraphicsD.RectanglePtr):BOOLEAN; CODE -522;

PROCEDURE ClearRegion(region{Reg.A0}:GraphicsD.RegionPtr); CODE -528;


PROCEDURE DisposeRegion(region{Reg.A0}:GraphicsD.RegionPtr); CODE -534;


PROCEDURE FreeVPortCopLists(vp{Reg.A0}:GraphicsD.ViewPortPtr); CODE -540;

PROCEDURE FreeCopList(coplist{Reg.A0}:GraphicsD.CopListPtr); CODE -546;

PROCEDURE ClipBlit(
           src{Reg.A0}:GraphicsD.RastPortPtr;
           srcX{Reg.D0}:INTEGER;
           srcY{Reg.D1}:INTEGER;
           dest{Reg.A1}:GraphicsD.RastPortPtr;
           destX{Reg.D2}:INTEGER;
           destY{Reg.D3}:INTEGER;
           xSize{Reg.D4}:INTEGER;
           ySize{Reg.D5}:INTEGER;
           minterm{Reg.D6}:SHORTCARD); CODE -552;


PROCEDURE XorRectRegion(
           region{Reg.A0}:GraphicsD.RegionPtr;
           rectangle{Reg.A1}:GraphicsD.RectanglePtr):BOOLEAN; CODE -558;

PROCEDURE FreeCprList(cprlist{Reg.A0}:GraphicsD.CprlistPtr); CODE -564;

PROCEDURE GetColorMap(
           entries{Reg.D0}:LONGINT):GraphicsD.ColorMapPtr; CODE -570;

PROCEDURE FreeColorMap(colorMap{Reg.A0}:GraphicsD.ColorMapPtr); CODE -576;

PROCEDURE GetRGB4(
           colorMap{Reg.A0}:GraphicsD.ColorMapPtr;
           entry{Reg.D0}:LONGINT):LONGINT; CODE -582;

PROCEDURE ScrollVPort(vp{Reg.A0}:GraphicsD.ViewPortPtr); CODE -588;

PROCEDURE UCopperListInit(
           copperList{Reg.A0}:GraphicsD.UCopListPtr;
           num{Reg.D0}:LONGINT):GraphicsD.CopListPtr; CODE -594;

PROCEDURE FreeGBuffers(
           anOb{Reg.A0}:GraphicsD.AnimObPtr;
           rp{Reg.A1}:GraphicsD.RastPortPtr;
           db{Reg.D0}:BOOLEAN); CODE -600;

PROCEDURE BltBitMapRastPort(
           srcbm{Reg.A0}:GraphicsD.BitMapPtr;
           srcX{Reg.D0}:INTEGER;
           srcY{Reg.D1}:INTEGER;
           destRp{Reg.A1}:GraphicsD.RastPortPtr;
           destX{Reg.D2}:INTEGER;
           destY{Reg.D3}:INTEGER;
           sizeX{Reg.D4}:INTEGER;
           sizeY{Reg.D5}:INTEGER;
           minterm{Reg.D6}:SHORTCARD); CODE -606;

PROCEDURE OrRegionRegion(
           region1{Reg.A0}:GraphicsD.RegionPtr;
           region2{Reg.A1}:GraphicsD.RegionPtr):BOOLEAN; CODE -612;

PROCEDURE XorRegionRegion(
           region1{Reg.A0}:GraphicsD.RegionPtr;
           region2{Reg.A1}:GraphicsD.RegionPtr):BOOLEAN; CODE -618;

PROCEDURE AndRegionRegion(
           region1{Reg.A0}:GraphicsD.RegionPtr;
           region2{Reg.A1}:GraphicsD.RegionPtr):BOOLEAN; CODE -624;

PROCEDURE SetRGB4CM(
           cm{Reg.A0}:GraphicsD.ColorMapPtr;
           n{Reg.D0}:CARDINAL;
           r{Reg.D1}:CARDINAL;
           g{Reg.D2}:CARDINAL;
           b{Reg.D3}:CARDINAL); CODE -630;

PROCEDURE BltMaskBitMapRastPort(
           srcbm{Reg.A0}:GraphicsD.BitMapPtr;
           srcX{Reg.D0}:INTEGER;
           srcY{Reg.D1}:INTEGER;
           destRp{Reg.A1}:GraphicsD.RastPortPtr;
           destX{Reg.D2}:INTEGER;
           destY{Reg.D3}:INTEGER;
           sizeX{Reg.D4}:INTEGER;
           sizeY{Reg.D5}:INTEGER;
           minterm{Reg.D6}:BYTE;
           bltmask{Reg.A2}:ADDRESS); CODE -636;

PROCEDURE AttemptLockLayerRom(
           layer{Reg.A5}:GraphicsD.LayerPtr):BOOLEAN; CODE -654;

(*--- functions in V36 or higher (distributed as Release 2.0) ---*)

PROCEDURE GfxNew(gfxNodeType{Reg.D0}:LONGCARD):ADDRESS; CODE -660;

PROCEDURE GfxFree(gfxNodePtr{Reg.A0}:ADDRESS); CODE -666;

PROCEDURE GfxAssociate(
                 associateNode{Reg.A0}:ADDRESS;
                 gfxNodePtr{Reg.A1}:ADDRESS); CODE -672;

PROCEDURE BitMapScale(
                 VAR bitScaleArgs{Reg.A0}:GraphicsD.BitScaleArgs); CODE -678;

PROCEDURE ScalerDiv(
                 factor{Reg.D0}:CARDINAL;
                 numerator{Reg.D1}:CARDINAL;
                 denominator{Reg.D2}:CARDINAL):CARDINAL; CODE -684;

PROCEDURE TextExtent(
                 rp{Reg.A1}:GraphicsD.RastPortPtr;
                 string{Reg.A0}:ADDRESS;
                 count{Reg.D0}:INTEGER;
                 VAR textExtent{Reg.A2}:GraphicsD.TextExtent); CODE -690;

PROCEDURE TextFit(
                 rp{Reg.A1}:GraphicsD.RastPortPtr;
                 string{Reg.A0}:ADDRESS;
                 strLen{Reg.D0}:CARDINAL;
                 VAR textExtent{Reg.A2}:GraphicsD.TextExtent;
                 constrainingExtent{Reg.A3}:GraphicsD.TextExtentPtr;
                 strDirection{Reg.D1}:INTEGER;
                 constrainBitWidth{Reg.D2}:CARDINAL;
                 constrainBitHeight{Reg.D3}:CARDINAL):LONGCARD; CODE -696;

PROCEDURE GfxLookUp(
                 associateNode{Reg.A0}:ADDRESS):ADDRESS; CODE -702;

PROCEDURE VideoControl(
                 VAR colorMap{Reg.A0}:GraphicsD.ColorMap;
                 tagarray{Reg.A1}:TagItemPtr):BOOLEAN; CODE -708;

PROCEDURE OpenMonitor(
                 monitorName{Reg.A1}:ADDRESS;
                 displayID{Reg.D0}:LONGCARD):GraphicsD.MonitorSpecPtr; CODE -714;

PROCEDURE CloseMonitor(
                 monitorSpec{Reg.A0}:GraphicsD.MonitorSpecPtr):BOOLEAN; CODE -720;

PROCEDURE FindDisplayInfo(
                 dispID{Reg.D0}:LONGCARD):GraphicsD.DisplayInfoHandle; CODE -726;

PROCEDURE NextDisplayInfo(displayID{Reg.D0}: LONGCARD): LONGCARD; CODE -732;

PROCEDURE GetDisplayInfoData(
                 handle{Reg.A0}:GraphicsD.DisplayInfoHandle;
                 buf{Reg.A1}:ADDRESS;
                 size{Reg.D0}:LONGCARD;
                 tagID{Reg.D1}:LONGCARD;
                 displayID{Reg.D2}:LONGCARD):LONGCARD; CODE -756;

PROCEDURE FontExtent(
                 font{Reg.A0}:GraphicsD.TextFontPtr;
                 VAR fontExtent{Reg.A1}:GraphicsD.TextExtent); CODE -762;

PROCEDURE ReadPixelLine8(
                 rp{Reg.A0}:GraphicsD.RastPortPtr;
                 xstart{Reg.D0}:CARDINAL;
                 ystart{Reg.D1}:CARDINAL;
                 width{Reg.D2}:CARDINAL;
                 array{Reg.A2}:ADDRESS;
                 tempRP{Reg.A1}:GraphicsD.RastPortPtr):LONGINT; CODE -768;

PROCEDURE WritePixelLine8(
                 rp{Reg.A0}:GraphicsD.RastPortPtr;
                 xstart{Reg.D0}:CARDINAL;
                 ystart{Reg.D1}:CARDINAL;
                 width{Reg.D2}:CARDINAL;
                 array{Reg.A2}:ADDRESS;
                 tempRP{Reg.A1}:GraphicsD.RastPortPtr):LONGINT; CODE -774;

PROCEDURE ReadPixelArray8(
                 rp{Reg.A0}:GraphicsD.RastPortPtr;
                 xstart{Reg.D0}:CARDINAL;
                 ystart{Reg.D1}:CARDINAL;
                 xstop{Reg.D2}:CARDINAL;
                 ystop{Reg.D3}:CARDINAL;
                 array{Reg.A2}:ADDRESS;
                 temprp{Reg.A1}:GraphicsD.RastPortPtr):LONGINT; CODE -780;

PROCEDURE WritePixelArray8(
                 rp{Reg.A0}:GraphicsD.RastPortPtr;
                 xstart{Reg.D0}:CARDINAL;
                 ystart{Reg.D1}:CARDINAL;
                 xstop{Reg.D2}:CARDINAL;
                 ystop{Reg.D3}:CARDINAL;
                 array{Reg.A2}:ADDRESS;
                 temprp{Reg.A1}:GraphicsD.RastPortPtr):LONGINT; CODE -786;

PROCEDURE GetVPModeID(
                 vp{Reg.A0}:GraphicsD.ViewPortPtr):LONGCARD; CODE -792;

PROCEDURE ModeNotAvailable(
                 modeID{Reg.D0}:LONGCARD):LONGCARD; CODE -798;

//V39-private
PROCEDURE WeighTAMatch(reqTextAttr{Reg.A0}:GraphicsD.TextAttrPtr;   
                       targetTextAttr{Reg.A1}:GraphicsD.TextAttrPtr;
                       targetTags{Reg.A2}:TagItemPtr):CARDINAL; CODE -804;

PROCEDURE EraseRect(
                 rp{Reg.A1}:GraphicsD.RastPortPtr;
                 xMin{Reg.D0}:INTEGER;
                 yMin{Reg.D1}:INTEGER;
                 xMax{Reg.D2}:INTEGER;
                 yMax{Reg.D3}:INTEGER); CODE -810;

PROCEDURE ExtendFont(
                 font{Reg.A0}:GraphicsD.TextFontPtr;
                 fontTags{Reg.A1}:TagItemPtr):LONGCARD; CODE -816;

PROCEDURE StripFont(
                 font{Reg.A0}: GraphicsD.TextFontPtr); CODE -822;

(* V39 *)
PROCEDURE CalcIVG(
                 v{Reg.A0}:GraphicsD.ViewPtr;
                 vp{Reg.A1}:GraphicsD.ViewPortPtr):CARDINAL; CODE -828;

PROCEDURE AttachPalExtra(
                 cm{Reg.A0}:GraphicsD.ColorMapPtr;
                 vp{Reg.A1}:GraphicsD.ViewPortPtr): LONGINT; CODE -834;

PROCEDURE ObtainBestPenA(
                 cm{Reg.A0}:GraphicsD.ColorMapPtr;
                 r{Reg.D1}:LONGCARD;
                 g{Reg.D2}:LONGCARD;
                 b{Reg.D3}:LONGCARD;
                 tags{Reg.A1}:TagItemPtr): LONGINT; CODE -840;

PROCEDURE SetRGB32(
                 vp{Reg.A0}:GraphicsD.ViewPortPtr;
                 n{Reg.D0}:LONGCARD;
                 r{Reg.D1}:LONGCARD;
                 g{Reg.D2}:LONGCARD;
                 b{Reg.D3}:LONGCARD); CODE -852;

PROCEDURE GetAPen(rp{Reg.A0}:GraphicsD.RastPortPtr):LONGCARD; CODE -858;

PROCEDURE GetBPen(rp{Reg.A0}:GraphicsD.RastPortPtr):LONGCARD; CODE -864;

PROCEDURE GetDrMd(rp{Reg.A0}:GraphicsD.RastPortPtr):LONGCARD; CODE -870;

PROCEDURE GetOutlinePen(rp{Reg.A0}:GraphicsD.RastPortPtr):LONGCARD; CODE -876;
// this is the name in the autodocs
PROCEDURE GetOPen(rp{Reg.A0}:GraphicsD.RastPortPtr):LONGCARD; CODE -876;

PROCEDURE LoadRGB32(
                 vp{Reg.A0}:GraphicsD.ViewPortPtr;
                 table{Reg.A1}:ADDRESS); CODE -882;

PROCEDURE SetChipRev(want{Reg.D0}:LONGSET):LONGSET; CODE -888;

PROCEDURE SetABPenDrMd(
                 rp{Reg.A1}:GraphicsD.RastPortPtr;
                 apen{Reg.D0}:LONGCARD;
                 bpen{Reg.D1}:LONGCARD;
                 drawmode{Reg.D2}:GraphicsD.DrawModeSet); CODE -894; //RegisterFill?

PROCEDURE GetRGB32(
                 cm{Reg.A0}:GraphicsD.ColorMapPtr;
                 firstcolor{Reg.D0}:LONGCARD;
                 ncolors{Reg.D1}:LONGCARD;
                 table{Reg.A1}:ADDRESS); CODE -900;

PROCEDURE AllocBitMap(
                 sizex{Reg.D0}:LONGCARD;
                 sizey{Reg.D1}:LONGCARD;
                 depth{Reg.D2}:LONGCARD;
                 flags{Reg.D3}:LONGSET;
                 friend_bitmap{Reg.A0}:GraphicsD.BitMapPtr): GraphicsD.BitMapPtr; CODE -918;

PROCEDURE FreeBitMap(bm{Reg.A0}:GraphicsD.BitMapPtr); CODE -924;

PROCEDURE GetExtSpriteA(
                 ss{Reg.A2}:GraphicsD.ExtSpritePtr;
                 tags{Reg.A1}:TagItemPtr): LONGINT; CODE -930;

PROCEDURE CoerceMode(
                 vp{Reg.A0}:GraphicsD.ViewPortPtr;
                 monitorid{Reg.D0}:LONGCARD;
                 flags{Reg.D1}:LONGSET):LONGCARD; CODE -936;

PROCEDURE ChangeVPBitMap(
                 vp{Reg.A0}:GraphicsD.ViewPortPtr;
                 bm{Reg.A1}:GraphicsD.BitMapPtr;
                 db{Reg.A2}:GraphicsD.DBufInfoPtr); CODE -942;

PROCEDURE ReleasePen(
                 cm{Reg.A0}:GraphicsD.ColorMapPtr;
                 n{Reg.D0}:LONGCARD); CODE -948;

PROCEDURE ObtainPen(
                 cm{Reg.A0}:GraphicsD.ColorMapPtr;
                 n{Reg.D0}:LONGCARD;
                 r{Reg.D1}:LONGCARD;
                 g{Reg.D2}:LONGCARD;
                 b{Reg.D3}:LONGCARD;
                 f{Reg.D4}:LONGSET):LONGCARD; CODE -954;

PROCEDURE GetBitMapAttr(
                 bm{Reg.A0}:GraphicsD.BitMapPtr;
                 attrnum{Reg.D1}:LONGCARD):LONGCARD; CODE -960;

PROCEDURE AllocDBufInfo(vp{Reg.A0}:GraphicsD.ViewPortPtr): GraphicsD.DBufInfoPtr; CODE -966;

PROCEDURE FreeDBufInfo(dbi{Reg.A1}: GraphicsD.DBufInfoPtr); CODE -972;

PROCEDURE SetOutlinePen(
                 rp{Reg.A0}:GraphicsD.RastPortPtr;
                 pen{Reg.D0}:LONGCARD):LONGCARD; CODE -978;

PROCEDURE SetWriteMask(
                 rp{Reg.A0}:GraphicsD.RastPortPtr;
                 msk{Reg.D0}:LONGCARD):LONGCARD; CODE -984;

PROCEDURE SetMaxPen(
                 rp{Reg.A0}:GraphicsD.RastPortPtr;
                 maxpen{Reg.D0}:LONGCARD); CODE -990;

PROCEDURE SetRGB32CM(
                 cm{Reg.A0}:GraphicsD.ColorMapPtr;
                 n{Reg.D0}:LONGCARD;
                 r{Reg.D1}:LONGCARD;
                 g{Reg.D2}:LONGCARD;
                 b{Reg.D3}:LONGCARD); CODE -996;

PROCEDURE ScrollRasterBF(
                 rp{Reg.A1}:GraphicsD.RastPortPtr;
                 dx{Reg.D0}:INTEGER;  // Do this have to be LONGINTs?
                 dy{Reg.D1}:INTEGER;
                 xMin{Reg.D2}:INTEGER;
                 yMin{Reg.D3}:INTEGER;
                 xMax{Reg.D4}:INTEGER;
                 yMax{Reg.D5}:INTEGER); CODE -1002;

PROCEDURE FindColor(
                 cm{Reg.A3}:GraphicsD.ColorMapPtr;
                 r{Reg.D1}:LONGCARD;
                 g{Reg.D2}:LONGCARD;
                 b{Reg.D3}:LONGCARD;
                 maxcolor{Reg.D4}:LONGINT):LONGCARD; CODE -1008;

PROCEDURE AllocSpriteDataA(
                 bm{Reg.A2}:GraphicsD.BitMapPtr;
                 tags{Reg.A1}:TagItemPtr):GraphicsD.ExtSpritePtr; CODE -1020;

PROCEDURE ChangeExtSpriteA(
                 vp{Reg.A0}:GraphicsD.ViewPortPtr;
                 oldsprite{Reg.A1}:GraphicsD.ExtSpritePtr;
                 newsprite{Reg.A2}:GraphicsD.ExtSpritePtr;
                 tags{Reg.A3}:TagItemPtr); CODE -1026;

PROCEDURE FreeSpriteData(sp{Reg.A2}:GraphicsD.ExtSpritePtr):LONGCARD; CODE -1032;

PROCEDURE SetRPAttrsA(
                 rp{Reg.A0}:GraphicsD.RastPortPtr;
                 tags{Reg.A1}:TagItemPtr); CODE -1038;

PROCEDURE GetRPAttrsA(
                 rp{Reg.A0}:GraphicsD.RastPortPtr;
                 tags{Reg.A1}:TagItemPtr); CODE -1044;

PROCEDURE BestModeIDA(tags{Reg.A0}:TagItemPtr):LONGCARD; CODE -1050;

(*--- functions in V40 or higher (Release 3.1); CODE - --- *)

PROCEDURE WriteChunkyPixels(
                 rp{Reg.A0}:GraphicsD.RastPortPtr;
                 xstart{Reg.D0}:LONGINT;
                 ystart{Reg.D1}:LONGINT;
                 xstop{Reg.D2}:LONGINT;
                 ystop{Reg.D3}:LONGINT;
                 array{Reg.A2}:ADDRESS;
                 bytesperrow{Reg.D4}:LONGINT); CODE -1056;


END GraphicsL.

