home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Pascal / HISOFTPASCAL2,0-3.DMS / in.adf / Units / Graphics.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-05-20  |  22.4 KB  |  1,106 lines

  1. unit Graphics;
  2.  
  3. INTERFACE
  4. uses Exec, Hardware, Utility;
  5.  
  6.  
  7. type
  8.     PLANEPTR = pointer;
  9.     pPoint = ^tPoint;
  10.     tPoint = record
  11.         x: integer;
  12.         y: integer;
  13.         end;
  14.  
  15.     Point = tPoint;
  16.     DisplayInfoHandle = pointer;
  17.     pLayer = ^tLayer;
  18.     pClipRect = ^tClipRect;
  19.     pRastPort = ^tRastPort;
  20.     pRectangle = ^tRectangle;
  21.     tRectangle = record
  22.         MinX: integer;
  23.         MinY: integer;
  24.         MaxX: integer;
  25.         MaxY: integer;
  26.         end;
  27.  
  28.     pBitMap = ^tBitMap;
  29.     pLayer_Info = ^tLayer_Info;
  30.     pRegion = ^tRegion;
  31.     tLayer = record
  32.         front: pLayer;
  33.         back: pLayer;
  34.         ClipRect: pClipRect;
  35.         rp: pRastPort;
  36.         bounds: tRectangle;
  37.         reserved: array [0..3] of byte;
  38.         priority: word;
  39.         Flags: word;
  40.         SuperBitMap: pBitMap;
  41.         SuperClipRect: pClipRect;
  42.         Window: pointer;
  43.         Scroll_X: integer;
  44.         Scroll_Y: integer;
  45.         cr: pClipRect;
  46.         cr2: pClipRect;
  47.         crnew: pClipRect;
  48.         SuperSaveClipRects: pClipRect;
  49.         _cliprects: pClipRect;
  50.         LayerInfo: pLayer_Info;
  51.         Lock: tSignalSemaphore;
  52.         BackFill: pHook;
  53.         reserved1: long;
  54.         ClipRegion: pRegion;
  55.         saveClipRects: pRegion;
  56.         Width: integer;
  57.         Height: integer;
  58.         reserved2: array [0..17] of byte;
  59.         DamageList: pRegion;
  60.         end;
  61.  
  62.     pcollTable = ^tcollTable;
  63.     tcollTable = record
  64.         collPtrs: array [0..15] of pointer;
  65.         end;
  66.  
  67.     pRegionRectangle = ^tRegionRectangle;
  68.     tRegion = record
  69.         bounds: tRectangle;
  70.         RegionRectangle: pRegionRectangle;
  71.         end;
  72.  
  73.     pViewPort = ^tViewPort;
  74.     pcprlist = ^tcprlist;
  75.     pView = ^tView;
  76.     tView = record
  77.         ViewPort: pViewPort;
  78.         LOFCprList: pcprlist;
  79.         SHFCprList: pcprlist;
  80.         DyOffset: integer;
  81.         DxOffset: integer;
  82.         Modes: word;
  83.         end;
  84.  
  85.     pTTextAttr = ^tTTextAttr;
  86.     tTTextAttr = record
  87.         tta_Name: STRPTR;
  88.         tta_YSize: word;
  89.         tta_Style: byte;
  90.         tta_Flags: byte;
  91.         tta_Tags: pTagItem;
  92.         end;
  93.  
  94.     pQueryHeader = ^tQueryHeader;
  95.     tQueryHeader = record
  96.         StructID: long;
  97.         DisplayID: long;
  98.         SkipID: long;
  99.         Length: long;
  100.         end;
  101.  
  102.     pVSprite = ^tVSprite;
  103.     pBob = ^tBob;
  104.     tVSprite = record
  105.         NextVSprite: pVSprite;
  106.         PrevVSprite: pVSprite;
  107.         DrawPath: pVSprite;
  108.         ClearPath: pVSprite;
  109.         OldY: integer;
  110.         OldX: integer;
  111.         Flags: integer;
  112.         Y: integer;
  113.         X: integer;
  114.         Height: integer;
  115.         Width: integer;
  116.         Depth: integer;
  117.         MeMask: integer;
  118.         HitMask: integer;
  119.         ImageData: pinteger;
  120.         BorderLine: pinteger;
  121.         CollMask: pinteger;
  122.         SprColors: pinteger;
  123.         VSBob: pBob;
  124.         PlanePick: shortint;
  125.         PlaneOnOff: shortint;
  126.         VUserExt: integer;
  127.         end;
  128.  
  129.     pDisplayInfo = ^tDisplayInfo;
  130.     tDisplayInfo = record
  131.         Header: tQueryHeader;
  132.         NotAvailable: word;
  133.         PropertyFlags: long;
  134.         Resolution: Point;
  135.         PixelSpeed: word;
  136.         NumStdSprites: word;
  137.         PaletteRange: word;
  138.         SpriteResolution: Point;
  139.         pad: array [0..3] of byte;
  140.         reserved: array [0..1] of long;
  141.         end;
  142.  
  143.     tRegionRectangle = record
  144.         Next: pRegionRectangle;
  145.         Prev: pRegionRectangle;
  146.         bounds: tRectangle;
  147.         end;
  148.  
  149.     pAnalogSignalInterval = ^tAnalogSignalInterval;
  150.     tAnalogSignalInterval = record
  151.         asi_Start: word;
  152.         asi_Stop: word;
  153.         end;
  154.  
  155.     pDimensionInfo = ^tDimensionInfo;
  156.     tDimensionInfo = record
  157.         Header: tQueryHeader;
  158.         MaxDepth: word;
  159.         MinRasterWidth: word;
  160.         MinRasterHeight: word;
  161.         MaxRasterWidth: word;
  162.         MaxRasterHeight: word;
  163.         Nominal: tRectangle;
  164.         MaxOScan: tRectangle;
  165.         VideoOScan: tRectangle;
  166.         TxtOScan: tRectangle;
  167.         StdOScan: tRectangle;
  168.         pad: array [0..13] of byte;
  169.         reserved: array [0..1] of long;
  170.         end;
  171.  
  172.     pExtendedNode = ^tExtendedNode;
  173.     tExtendedNode = record
  174.         xln_Succ: pNode;
  175.         xln_Pred: pNode;
  176.         xln_Type: byte;
  177.         xln_Pri: shortint;
  178.         xln_Name: pbyte;
  179.         xln_Subsystem: byte;
  180.         xln_Subtype: byte;
  181.         xln_Library: longint;
  182.         xln_Init: pointer;
  183.         end;
  184.  
  185.     pMonitorSpec = ^tMonitorSpec;
  186.     pViewExtra = ^tViewExtra;
  187.     tViewExtra = record
  188.         n: tExtendedNode;
  189.         View: pView;
  190.         Monitor: pMonitorSpec;
  191.         end;
  192.  
  193.     pTextFontExtension = ^tTextFontExtension;
  194.     pTextFont = ^tTextFont;
  195.     tTextFont = record
  196.         case integer of
  197.         0: (
  198.         tf_Message: tMessage;
  199.         tf_YSize: word;
  200.         tf_Style: byte;
  201.         tf_Flags: byte;
  202.         tf_XSize: word;
  203.         tf_Baseline: word;
  204.         tf_BoldSmear: word;
  205.         tf_Accessors: word;
  206.         tf_LoChar: byte;
  207.         tf_HiChar: byte;
  208.         tf_CharData: pointer;
  209.         tf_Modulo: word;
  210.         tf_CharLoc: pointer;
  211.         tf_CharSpace: pointer;
  212.         tf_CharKern: pointer;
  213.         );
  214.         1: (
  215.         __: tNode;
  216.         tf_Extension: pTextFontExtension;
  217.         );
  218.         end;
  219.  
  220.     pTmpRas = ^tTmpRas;
  221.     pAreaInfo = ^tAreaInfo;
  222.     pGelsInfo = ^tGelsInfo;
  223.     tRastPort = record
  224.         Layer: pLayer;
  225.         BitMap: pBitMap;
  226.         AreaPtrn: pword;
  227.         TmpRas: pTmpRas;
  228.         AreaInfo: pAreaInfo;
  229.         GelsInfo: pGelsInfo;
  230.         Mask: byte;
  231.         FgPen: shortint;
  232.         BgPen: shortint;
  233.         AOlPen: shortint;
  234.         DrawMode: shortint;
  235.         AreaPtSz: shortint;
  236.         linpatcnt: shortint;
  237.         dummy: shortint;
  238.         Flags: word;
  239.         LinePtrn: word;
  240.         cp_x: integer;
  241.         cp_y: integer;
  242.         minterms: array [0..7] of byte;
  243.         PenWidth: integer;
  244.         PenHeight: integer;
  245.         Font: pTextFont;
  246.         AlgoStyle: byte;
  247.         TxFlags: byte;
  248.         TxHeight: word;
  249.         TxWidth: word;
  250.         TxBaseline: word;
  251.         TxSpacing: integer;
  252.         RP_User: ppointer;
  253.         longreserved: array [0..1] of long;
  254.         wordreserved: array [0..6] of word;
  255.         reserved: array [0..7] of byte;
  256.         end;
  257.  
  258.     pTextAttr = ^tTextAttr;
  259.     tTextAttr = record
  260.         ta_Name: STRPTR;
  261.         ta_YSize: word;
  262.         ta_Style: byte;
  263.         ta_Flags: byte;
  264.         end;
  265.  
  266.     pColorMap = ^tColorMap;
  267.     pCopList = ^tCopList;
  268.     pUCopList = ^tUCopList;
  269.     pRasInfo = ^tRasInfo;
  270.     tViewPort = record
  271.         Next: pViewPort;
  272.         ColorMap: pColorMap;
  273.         DspIns: pCopList;
  274.         SprIns: pCopList;
  275.         ClrIns: pCopList;
  276.         UCopIns: pUCopList;
  277.         DWidth: integer;
  278.         DHeight: integer;
  279.         DxOffset: integer;
  280.         DyOffset: integer;
  281.         Modes: word;
  282.         SpritePriorities: byte;
  283.         ExtendedModes: byte;
  284.         RasInfo: pRasInfo;
  285.         end;
  286.  
  287.     pColorFontColors = ^tColorFontColors;
  288.     pColorTextFont = ^tColorTextFont;
  289.     tColorTextFont = record
  290.         ctf_TF: tTextFont;
  291.         ctf_Flags: word;
  292.         ctf_Depth: byte;
  293.         ctf_FgColor: byte;
  294.         ctf_Low: byte;
  295.         ctf_High: byte;
  296.         ctf_PlanePick: byte;
  297.         ctf_PlaneOnOff: byte;
  298.         ctf_ColorFontColors: pColorFontColors;
  299.         ctf_CharData: array [0..7] of pointer;
  300.         end;
  301.  
  302.     pSpecialMonitor = ^tSpecialMonitor;
  303.     tMonitorSpec = record
  304.         ms_Node: tExtendedNode;
  305.         ms_Flags: word;
  306.         ratioh: longint;
  307.         ratiov: longint;
  308.         total_rows: word;
  309.         total_colorclocks: word;
  310.         DeniseMaxDisplayColumn: word;
  311.         BeamCon0: word;
  312.         min_row: word;
  313.         ms_Special: pSpecialMonitor;
  314.         ms_OpenCount: word;
  315.         ms_transform: pointer;
  316.         ms_translate: pointer;
  317.         ms_scale: pointer;
  318.         ms_xoffset: word;
  319.         ms_yoffset: word;
  320.         ms_LegalView: tRectangle;
  321.         ms_maxoscan: pointer;
  322.         ms_videoscan: pointer;
  323.         DeniseMinDisplayColumn: word;
  324.         DisplayCompatible: long;
  325.         DisplayInfoDataBase: tList;
  326.         DisplayInfoDataBaseSemaphore: tSignalSemaphore;
  327.         ms_reserved00: long;
  328.         ms_reserved01: long;
  329.         end;
  330.  
  331.     pMonitorInfo = ^tMonitorInfo;
  332.     tMonitorInfo = record
  333.         Header: tQueryHeader;
  334.         Mspc: pMonitorSpec;
  335.         ViewPosition: Point;
  336.         ViewResolution: Point;
  337.         ViewPositionRange: tRectangle;
  338.         TotalRows: word;
  339.         TotalColorClocks: word;
  340.         MinRow: word;
  341.         Compatibility: integer;
  342.         pad: array [0..35] of byte;
  343.         DefaultViewPosition: Point;
  344.         PreferredModeID: long;
  345.         reserved: array [0..1] of long;
  346.         end;
  347.  
  348.     tColorFontColors = record
  349.         cfc_Reserved: word;
  350.         cfc_Count: word;
  351.         cfc_ColorTable: pword;
  352.         end;
  353.  
  354.     tSpecialMonitor = record
  355.         spm_Node: tExtendedNode;
  356.         spm_Flags: word;
  357.         do_monitor: pointer;
  358.         reserved1: pointer;
  359.         reserved2: pointer;
  360.         reserved3: pointer;
  361.         hblank: tAnalogSignalInterval;
  362.         vblank: tAnalogSignalInterval;
  363.         hsync: tAnalogSignalInterval;
  364.         vsync: tAnalogSignalInterval;
  365.         end;
  366.  
  367.     pViewPortExtra = ^tViewPortExtra;
  368.     tViewPortExtra = record
  369.         n: tExtendedNode;
  370.         ViewPort: pViewPort;
  371.         DisplayClip: tRectangle;
  372.         end;
  373.  
  374.     pSimpleSprite = ^tSimpleSprite;
  375.     tSimpleSprite = record
  376.         posctldata: pword;
  377.         height: word;
  378.         x: word;
  379.         y: word;
  380.         num: word;
  381.         end;
  382.  
  383.     pTextExtent = ^tTextExtent;
  384.     tTextExtent = record
  385.         te_Width: word;
  386.         te_Height: word;
  387.         te_Extent: tRectangle;
  388.         end;
  389.  
  390.     pDBufPacket = ^tDBufPacket;
  391.     tDBufPacket = record
  392.         BufY: integer;
  393.         BufX: integer;
  394.         BufPath: pVSprite;
  395.         BufBuffer: pinteger;
  396.         end;
  397.  
  398.     pcopinit = ^tcopinit;
  399.     tcopinit = record
  400.         vsync_hblank: array [0..1] of word;
  401.         diwstart: array [0..3] of word;
  402.         diagstrt: array [0..3] of word;
  403.         sprstrtup: array [0..31] of word;
  404.         wait14: array [0..1] of word;
  405.         norm_hblank: array [0..1] of word;
  406.         genloc: array [0..3] of word;
  407.         jump: array [0..3] of word;
  408.         wait_forever: array [0..1] of word;
  409.         sprstop: array [0..3] of word;
  410.         end;
  411.  
  412.     pIsrvstr = ^tIsrvstr;
  413.     tIsrvstr = record
  414.         is_Node: tNode;
  415.         Iptr: pIsrvstr;
  416.         code: pointer;
  417.         ccode: pointer;
  418.         Carg: longint;
  419.         end;
  420.  
  421.     pBitScaleArgs = ^tBitScaleArgs;
  422.     tBitScaleArgs = record
  423.         bsa_SrcX: word;
  424.         bsa_SrcY: word;
  425.         bsa_SrcWidth: word;
  426.         bsa_SrcHeight: word;
  427.         bsa_XSrcFactor: word;
  428.         bsa_YSrcFactor: word;
  429.         bsa_DestX: word;
  430.         bsa_DestY: word;
  431.         bsa_DestWidth: word;
  432.         bsa_DestHeight: word;
  433.         bsa_XDestFactor: word;
  434.         bsa_YDestFactor: word;
  435.         bsa_SrcBitMap: pBitMap;
  436.         bsa_DestBitMap: pBitMap;
  437.         bsa_Flags: long;
  438.         bsa_XDDA: word;
  439.         bsa_YDDA: word;
  440.         bsa_Reserved1: longint;
  441.         bsa_Reserved2: longint;
  442.         end;
  443.  
  444.     pAnimOb = ^tAnimOb;
  445.     pAnimComp = ^tAnimComp;
  446.     tAnimOb = record
  447.         NextOb: pAnimOb;
  448.         PrevOb: pAnimOb;
  449.         Clock: longint;
  450.         AnOldY: integer;
  451.         AnOldX: integer;
  452.         AnY: integer;
  453.         AnX: integer;
  454.         YVel: integer;
  455.         XVel: integer;
  456.         YAccel: integer;
  457.         XAccel: integer;
  458.         RingYTrans: integer;
  459.         RingXTrans: integer;
  460.         AnimORoutine: pointer;
  461.         HeadComp: pAnimComp;
  462.         AUserExt: integer;
  463.         end;
  464.  
  465.     tcprlist = record
  466.         Next: pcprlist;
  467.         start: pword;
  468.         MaxCount: integer;
  469.         end;
  470.  
  471.     ppSimpleSprite = ^pSimpleSprite;
  472.     pGfxBase = ^tGfxBase;
  473.     tGfxBase = record
  474.         LibNode: tLibrary;
  475.         ActiView: pView;
  476.         copinit: pcopinit;
  477.         cia: plongint;
  478.         blitter: plongint;
  479.         LOFlist: pword;
  480.         SHFlist: pword;
  481.         blthd: pbltnode;
  482.         blttl: pbltnode;
  483.         bsblthd: pbltnode;
  484.         bsblttl: pbltnode;
  485.         vbsrv: tInterrupt;
  486.         timsrv: tInterrupt;
  487.         bltsrv: tInterrupt;
  488.         TextFonts: tList;
  489.         DefaultFont: pTextFont;
  490.         Modes: word;
  491.         VBlank: shortint;
  492.         Debug: shortint;
  493.         BeamSync: integer;
  494.         system_bplcon0: integer;
  495.         SpriteReserved: byte;
  496.         bytereserved: byte;
  497.         Flags: word;
  498.         BlitLock: integer;
  499.         BlitNest: integer;
  500.         BlitWaitQ: tList;
  501.         BlitOwner: pTask;
  502.         TOF_WaitQ: tList;
  503.         DisplayFlags: word;
  504.         SimpleSprites: ppSimpleSprite;
  505.         MaxDisplayRow: word;
  506.         MaxDisplayColumn: word;
  507.         NormalDisplayRows: word;
  508.         NormalDisplayColumns: word;
  509.         NormalDPMX: word;
  510.         NormalDPMY: word;
  511.         LastChanceMemory: pSignalSemaphore;
  512.         LCMptr: pword;
  513.         MicrosPerLine: word;
  514.         MinDisplayColumn: word;
  515.         ChipRevBits0: byte;
  516.         crb_reserved: array [0..4] of byte;
  517.         monitor_id: word;
  518.         hedley: array [0..7] of long;
  519.         hedley_sprites: array [0..7] of long;
  520.         hedley_sprites1: array [0..7] of long;
  521.         hedley_count: integer;
  522.         hedley_flags: word;
  523.         hedley_tmp: integer;
  524.         hash_table: plongint;
  525.         current_tot_rows: word;
  526.         current_tot_cclks: word;
  527.         hedley_hint: byte;
  528.         hedley_hint2: byte;
  529.         nreserved: array [0..3] of long;
  530.         a2024_sync_raster: plongint;
  531.         control_delta_pal: integer;
  532.         control_delta_ntsc: integer;
  533.         current_monitor: pMonitorSpec;
  534.         MonitorList: tList;
  535.         default_monitor: pMonitorSpec;
  536.         MonitorListSemaphore: pSignalSemaphore;
  537.         DisplayInfoDataBase: pointer;
  538.         lapad: integer;
  539.         ActiViewCprSemaphore: pSignalSemaphore;
  540.         UtilityBase: plong;
  541.         ExecBase: plong;
  542.         end;
  543.  
  544.     tAreaInfo = record
  545.         VctrTbl: pinteger;
  546.         VctrPtr: pinteger;
  547.         FlagTbl: pshortint;
  548.         FlagPtr: pshortint;
  549.         Count: integer;
  550.         MaxCount: integer;
  551.         FirstX: integer;
  552.         FirstY: integer;
  553.         end;
  554.  
  555.     tTextFontExtension = record
  556.         tfe_MatchWord: word;
  557.         tfe_Flags0: byte;
  558.         tfe_Flags1: byte;
  559.         tfe_BackPtr: pTextFont;
  560.         tfe_OrigReplyPort: pMsgPort;
  561.         tfe_Tags: pTagItem;
  562.         tfe_OFontPatchS: pword;
  563.         tfe_OFontPatchK: pword;
  564.         end;
  565.  
  566.     pPLANEPTR = ^PLANEPTR;
  567.     tBitMap = record
  568.         BytesPerRow: word;
  569.         Rows: word;
  570.         Flags: byte;
  571.         Depth: byte;
  572.         pad: word;
  573.         Planes: array [0..7] of PLANEPTR;
  574.         end;
  575.  
  576.     tBob = record
  577.         Flags: integer;
  578.         SaveBuffer: pinteger;
  579.         ImageShadow: pinteger;
  580.         Before: pBob;
  581.         After: pBob;
  582.         BobVSprite: pVSprite;
  583.         BobComp: pAnimComp;
  584.         DBuffer: pDBufPacket;
  585.         BUserExt: integer;
  586.         end;
  587.  
  588.     pNameInfo = ^tNameInfo;
  589.     tNameInfo = record
  590.         Header: tQueryHeader;
  591.         Name: array [0..31] of byte;
  592.         reserved: array [0..1] of long;
  593.         end;
  594.  
  595.     tUCopList = record
  596.         Next: pUCopList;
  597.         FirstCopList: pCopList;
  598.         CopList: pCopList;
  599.         end;
  600.  
  601.     tAnimComp = record
  602.         Flags: integer;
  603.         Timer: integer;
  604.         TimeSet: integer;
  605.         NextComp: pAnimComp;
  606.         PrevComp: pAnimComp;
  607.         NextSeq: pAnimComp;
  608.         PrevSeq: pAnimComp;
  609.         AnimCRoutine: pointer;
  610.         YTrans: integer;
  611.         XTrans: integer;
  612.         HeadOb: pAnimOb;
  613.         AnimBob: pBob;
  614.         end;
  615.  
  616.     pCopIns = ^tCopIns;
  617.     tCopIns = record
  618.         OpCode: integer;
  619.         case integer of
  620.         0: (
  621.         NXTLIST: pCopList;
  622.         );
  623.         1: (
  624.         VWAITPOS: integer;
  625.         HWAITPOS: integer;
  626.         );
  627.         2: (
  628.         DESTADDR: integer;
  629.         DESTDATA: integer;
  630.         );
  631.         end;
  632.  
  633.     tClipRect = record
  634.         Next: pClipRect;
  635.         prev: pClipRect;
  636.         lobs: pLayer;
  637.         BitMap: pBitMap;
  638.         bounds: tRectangle;
  639.         _p1: pointer;
  640.         _p2: pointer;
  641.         reserved: longint;
  642.         end;
  643.  
  644.     tRasInfo = record
  645.         Next: pRasInfo;
  646.         BitMap: pBitMap;
  647.         RxOffset: integer;
  648.         RyOffset: integer;
  649.         end;
  650.  
  651.     tGelsInfo = record
  652.         sprRsrvd: shortint;
  653.         Flags: byte;
  654.         gelHead: pVSprite;
  655.         gelTail: pVSprite;
  656.         nextLine: pinteger;
  657.         lastColor: ppinteger;
  658.         collHandler: pcollTable;
  659.         leftmost: integer;
  660.         rightmost: integer;
  661.         topmost: integer;
  662.         bottommost: integer;
  663.         firstBlissObj: pointer;
  664.         lastBlissObj: pointer;
  665.         end;
  666.  
  667.     tColorMap = record
  668.         Flags: byte;
  669.         Type_: byte;
  670.         Count: word;
  671.         ColorTable: pointer;
  672.         cm_vpe: pViewPortExtra;
  673.         TransparencyBits: pword;
  674.         TransparencyPlane: byte;
  675.         reserved1: byte;
  676.         reserved2: word;
  677.         cm_vp: pViewPort;
  678.         NormalDisplayInfo: pointer;
  679.         CoerceDisplayInfo: pointer;
  680.         cm_batch_items: pTagItem;
  681.         VPModeID: long;
  682.         end;
  683.  
  684.     tLayer_Info = record
  685.         top_layer: pLayer;
  686.         check_lp: pLayer;
  687.         obs: pClipRect;
  688.         FreeClipRects: tMinList;
  689.         Lock: tSignalSemaphore;
  690.         gs_Head: tList;
  691.         longreserved: longint;
  692.         Flags: word;
  693.         fatten_count: shortint;
  694.         LockLayersCount: shortint;
  695.         LayerInfo_extra_size: word;
  696.         blitbuff: pinteger;
  697.         LayerInfo_extra: pointer;
  698.         end;
  699.  
  700.     tTmpRas = record
  701.         RasPtr: pshortint;
  702.         Size: longint;
  703.         end;
  704.  
  705.     pRect32 = ^tRect32;
  706.     tRect32 = record
  707.         MinX: longint;
  708.         MinY: longint;
  709.         MaxX: longint;
  710.         MaxY: longint;
  711.         end;
  712.  
  713.     tCopList = record
  714.         Next: pCopList;
  715.         _CopList: pCopList;
  716.         _ViewPort: pViewPort;
  717.         CopIns: pCopIns;
  718.         CopPtr: pCopIns;
  719.         CopLStart: pword;
  720.         CopSStart: pword;
  721.         Count: integer;
  722.         MaxCount: integer;
  723.         DyOffset: integer;
  724.         end;
  725.  
  726.  
  727.  
  728. const
  729.     HIRES_KEY = $8000;
  730.     LORESLACEDPF_KEY = $404;
  731.     VGAPRODUCTDPF_KEY = $39424;
  732.     VTAG_BATCH_CM_GET = $8000001C;
  733.     FSF_BOLD = 2;
  734.     VTAG_BATCH_CM_CLR = $8000000D;
  735.     TO_MONITOR = 0;
  736.     FSF_EXTENDED = 8;
  737.     FSF_COLORFONT = $40;
  738.     HSYNCTRUE = 1;
  739.     VIEW_EXTRA_TYPE = 1;
  740.     STANDARD_COLORCLOCKS = $E2;
  741.     REQUEST_A2024 = 8;
  742.     VGA_VSSTOP = $235;
  743.     VGALORESLACE_KEY = $39005;
  744.     VGAEXTRALORESLACEDPF_KEY = $31405;
  745.     BPLCON3_ZDCLKEN = 4;
  746.     BORDER_NOTRANSPARENCY = 8;
  747.     RIGHTHIT = 8;
  748.     DIPF_IS_LACE = 1;
  749.     DBUFFER = 4;
  750.     VARBEAM = $80;
  751.     CSBLANK = 8;
  752.     VGA70_VSSTOP = $388;
  753.     BROADCAST_HBSTOP = $27;
  754.     DIPF_IS_PANELLED = $400;
  755.     VPF_AGNUS = $20;
  756.     COLORMAP_TRANSPARENCY = 1;
  757.     VTAG_VPMODEID_GET = $80000020;
  758.     GELGONE = $400;
  759.     ALERTLAYERSNOMEM = $83010000;
  760.     CTB_MAPCOLOR = 0;
  761.     VTAG_VPMODEID_CLR = $80000022;
  762.     A2024TENHERTZ_KEY = $41000;
  763.     SAVEBOB = 1;
  764.     NTSC = 1;
  765.     VTAG_CHROMA_PLANE_GET = $8000001A;
  766.     LORES_KEY = 0;
  767.     SUPERLACEDPF_KEY = $8424;
  768.     VTAG_BORDERNOTRANS_SET = $80000007;
  769.     VGA_VSSTRT = $153;
  770.     HAMLACE_KEY = $804;
  771.     GFXB_HR_AGNUS = 0;
  772.     VTAG_BORDERBLANK_GET = $80000017;
  773.     VARCSYNC = $10;
  774.     EXTEND_VSTRUCT = $1000;
  775.     CPR_NT_SHT = $4000;
  776.     STANDARD_NTSC_ROWS = $106;
  777.     VGA70_BEAMCON = $1A8A;
  778.     FPB_DISKFONT = 1;
  779.     CTF_MAPCOLOR = 1;
  780.     VTAG_BORDERBLANK_CLR = $80000004;
  781.     VTAG_BATCH_CM_SET = $8000000E;
  782.     HAM = $800;
  783.     BORDER_BLANKING = 4;
  784.     VGA70_VSSTRT = $2A6;
  785.     BROADCAST_HBSTRT = 1;
  786.     MCOMPAT_SELF = 1;
  787.     VGAEXTRALORES_KEY = $31004;
  788.     SAVEPRESERVE = $1000;
  789.     GFXF_HR_AGNUS = 1;
  790.     DI_AVAIL_NOCHIPS = 1;
  791.     HIRESDPF_KEY = $8400;
  792.     FPF_DISKFONT = 2;
  793.     VARHSYNC = $100;
  794.     VSYNCTRUE = 2;
  795.     CR_NEEDS_NO_CONCEALED_RASTERS = 1;
  796.     DIW_VRTCL_POS_SHIFT = 7;
  797.     AREAOUTLINE = 8;
  798.     NEWLAYERINFO_CALLED = 1;
  799.     VTAG_BATCH_ITEMS_ADD = $8000001F;
  800.     CSCBLANKEN = $400;
  801.     VPF_TENHZ = $20;
  802.     STANDARD_XOFFSET = 9;
  803.     STANDARD_MONITOR_MASK = 3;
  804.     DIPF_IS_BEAMSYNC = $800;
  805.     PAL = 4;
  806.     VTAG_VPMODEID_SET = $80000021;
  807.     PFB_FINE_SCROLL_SHIFT = 4;
  808.     STANDARD_YOFFSET = 0;
  809.     VGA_TOTAL_ROWS = $20C;
  810.     BROADCAST_VBSTOP = $1C40;
  811.     SUPER_KEY = $8020;
  812.     VGALORESLACEDPF_KEY = $39405;
  813.     CT_COLORMASK = $F;
  814.     DISPLAYDUAL = $40;
  815.     HOLDNMODIFY = $800;
  816.     VTAG_CHROMA_PLANE_SET = $8000000A;
  817.     USE_BPLCON3 = 1;
  818.     STANDARD_PAL_ROWS = $138;
  819.     VGA70_TOTAL_ROWS = $1C1;
  820.     VTAG_USERCLIP_GET = $80000023;
  821.     LEFTHIT = 4;
  822.     BROADCAST_HSSTOP = $17;
  823.     VTAG_BORDERBLANK_SET = $80000005;
  824.     VTAG_USERCLIP_CLR = $80000025;
  825.     VGAPRODUCTLACEDPF2_KEY = $39465;
  826.     VIEWPORT_EXTRA_TYPE = 2;
  827.     MUSTDRAW = 8;
  828.     LORESDPF_KEY = $400;
  829.     CR_NEEDS_NO_LAYERBLIT_DAMAGE = 2;
  830.     BROADCAST_VBSTRT = 0;
  831.     B2SWAP = 1;
  832.     CPR_NT_SYS = $2000;
  833.     RINGTRIGGER = 1;
  834.     B2NORM = 0;
  835.     VPOSRLOF = $8000;
  836.     SPRITE_ATTACHED = $80;
  837.     VTAG_BITPLANEKEY_GET = $80000016;
  838.     EXTRA_HALFBRITE = $80;
  839.     NTSC_MONITOR_NAME = 'ntsc.monitor';
  840.     BROADCAST_HSSTRT = 6;
  841.     VGALORES_KEY = $39004;
  842.     VGAEXTRALORESDPF_KEY = $31404;
  843.     VTAG_BITPLANEKEY_CLR = $80000002;
  844.     VARVSYNC = $200;
  845.     PF2PRI = $40;
  846.     VGAHAMLACE_KEY = $31805;
  847.     LAYERSIMPLE = 1;
  848.     FPB_WIDEDOT = 4;
  849.     CT_COLORFONT = 1;
  850.     VTAG_VIEWPORTEXTRA_GET = $80000013;
  851.     BPLCON2_ZDBPEN = $800;
  852.     DEFAULT_MONITOR_NAME = 'default.monitor';
  853.     FPB_REMOVED = 7;
  854.     EXTRAHALFBRITELACE_KEY = $84;
  855.     VTAG_USERCLIP_SET = $80000024;
  856.     COLORON = $200;
  857.     ANFRACSIZE = 6;
  858.     FSB_TAGGED = 7;
  859.     FPB_TALLDOT = 3;
  860.     FPF_WIDEDOT = $10;
  861.     VGA_COLORCLOCKS = $71;
  862.     DISPLAYNAMELEN = $20;
  863.     SUPERDPF_KEY = $8420;
  864.     GENLOC = 2;
  865.     FPB_PROPORTIONAL = 5;
  866.     MODE_640 = $8000;
  867.     STANDARD_DENISE_MIN = $5D;
  868.     BROADCAST_VSSTOP = $54C;
  869.     HAM_KEY = $800;
  870.     A2024_MONITOR_ID = $41000;
  871.     FPF_REMOVED = $80;
  872.     VTAG_COERCE_DISP_GET = $80000011;
  873.     BPLCON2_ZDCTEN = $400;
  874.     VGA70_COLORCLOCKS = $71;
  875.     BACKSAVED = $100;
  876.     NOCROSSFILL = $20;
  877.     VP_HIDE = $2000;
  878.     STANDARD_DENISE_MAX = $1C7;
  879.     B2BOBBER = 2;
  880.     FRST_DOT = 1;
  881.     FSF_TAGGED = $80;
  882.     FPF_TALLDOT = 8;
  883.     PAL_MONITOR_NAME = 'pal.monitor';
  884.     HIRESLACEDPF2_KEY = $8444;
  885.     FPF_PROPORTIONAL = $20;
  886.     VTAG_BATCH_ITEMS_GET = $8000001D;
  887.     DUALPF = $400;
  888.     STANDARD_HBSTOP = $2C;
  889.     VGA_MONITOR_NAME = 'vga.monitor';
  890.     DIPF_IS_GENLOCK = $80;
  891.     OVERLAY = 4;
  892.     FPB_REVPATH = 2;
  893.     VTAG_BITPLANEKEY_SET = $80000003;
  894.     BDRAWN = $200;
  895.     VGA70_MONITOR_NAME = 'vga70.monitor';
  896.     BROADCAST_BEAMCON = $808;
  897.     DIPF_IS_HAM = 8;
  898.     BUSERFLAGS = $FF;
  899.     VTAG_VIEWPORTEXTRA_SET = $80000014;
  900.     BITCLR = 0;
  901.     BROADCAST_VSSTRT = $2A6;
  902.     DIW_VRTCL_POS = $1FF;
  903.     FSB_ITALIC = 2;
  904.     FPF_REVPATH = 4;
  905.     DIW_HORIZ_POS = $7F;
  906.     SS_GRAPHICS = 2;
  907.     FROM_MONITOR = 1;
  908.     RATIO_FIXEDPART = 4;
  909.     VGALORESDPF_KEY = $39404;
  910.     BOBNIX = $800;
  911.     PFA_FINE_SCROLL = $F;
  912.     ONE_DOT = 2;
  913.     TA_DeviceDPI = $80000001;
  914.     VTAG_END_CM = 0;
  915.     STANDARD_HBSTRT = 6;
  916.     DIPF_IS_ECS = $10;
  917.     INVALID_ID = $FFFFFFFF;
  918.     TE0B_NOREMFONT = 0;
  919.     DISPLAYPAL = $20;
  920.     DFTCH_MASK = $FF;
  921.     COMPLEMENT = 2;
  922.     FSF_ITALIC = 4;
  923.     MAXFONTMATCHWEIGHT = $7FFF;
  924.     VTAG_COERCE_DISP_SET = $80000012;
  925.     SPRITES = $4000;
  926.     ISLESSX = 1;
  927.     MONITOR_SPEC_TYPE = 4;
  928.     REQUEST_SPECIAL = 4;
  929.     DIPF_IS_PAL = $20;
  930.     LORESLACEDPF2_KEY = $444;
  931.     VGAPRODUCTDPF2_KEY = $39464;
  932.     FSB_UNDERLINED = 0;
  933.     USER_COPPER_CLIP = $20;
  934.     ISLESSY = 2;
  935.     REQUEST_NTSC = 1;
  936.     DI_AVAIL_NOTWITHGENLOCK = 4;
  937.     LOLDIS = $800;
  938.     COLORPLANE_TRANSPARENCY = 2;
  939.     VSPRITE = 1;
  940.     FPB_ROMFONT = 0;
  941.     TE0F_NOREMFONT = 1;
  942.     VTAG_BATCH_ITEMS_SET = $8000001E;
  943.     COPPER_WAIT = 1;
  944.     VGAEXTRALORESLACEDPF2_KEY = $31445;
  945.     VGAEXTRAHALFBRITELACE_KEY = $31085;
  946.     LAYERBACKDROP = $40;
  947.     FSF_UNDERLINED = 1;
  948.     BITSET = $8000;
  949.     COPPER_MOVE = 0;
  950.     STANDARD_VBSTOP = $1066;
  951.     BOBUPDATE = $200;
  952.     FPF_ROMFONT = 1;
  953.     VIDEOCONTROL_BATCH = $10;
  954.     DBLPF = $400;
  955.     INTERLACE = 4;
  956.     VGAHAM_KEY = $31804;
  957.     ISGRTRX = 4;
  958.     STANDARD_HSSTOP = $1C;
  959.     DIPF_IS_DRAGGABLE = $200;
  960.     ISGRTRY = 8;
  961.     VGAPRODUCTLACE_KEY = $39025;
  962.     OUTSTEP = $2000;
  963.     LAYER_CLIPRECTS_LOST = $100;
  964.     SUPERLACEDPF2_KEY = $8464;
  965.     EXTRAHALFBRITE_KEY = $80;
  966.     SUSERFLAGS = $FF;
  967.     CT_GREYFONT = 2;
  968.     BPLCON2_ZDBPSEL0 = $1000;
  969.     REQUEST_PAL = 2;
  970.     VTAG_NORMAL_DISP_GET = $8000000F;
  971.     BPLCON2_ZDBPSEL1 = $2000;
  972.     SPECIAL_MONITOR_TYPE = 3;
  973.     STANDARD_VBSTRT = $122;
  974.     DIPF_IS_PF2PRI = 4;
  975.     BPLCON2_ZDBPSEL2 = $4000;
  976.     JAM1 = 0;
  977.     BPLCON3_EXTBLNKEN = 1;
  978.     BOBISCOMP = 2;
  979.     JAM2 = 1;
  980.     PLNCNTSHFT = $C;
  981.     STANDARD_HSSTRT = $B;
  982.     LAYERSMART = 2;
  983.     DTAG_NAME = $80003000;
  984.     DIPF_IS_EXTRAHALFBRITE = $1000;
  985.     HIRESDPF2_KEY = $8440;
  986.     GFXB_BIG_BLITS = 0;
  987.     TOPHIT = 1;
  988.     BORDERHIT = 0;
  989.     MIN_NTSC_ROW = $15;
  990.     GFXB_HR_DENISE = 1;
  991.     VTAG_NEXTBUF_CM = $8000000C;
  992.     VGA_DENISE_MIN = $3B;
  993.     VGALORESLACEDPF2_KEY = $39445;
  994.     VTAG_CHROMA_PEN_GET = $80000019;
  995.     BPLCON3_BRDNBLNK = $20;
  996.     DIPF_IS_DUALPF = 2;
  997.     SAVEBACK = 2;
  998.     ANIMHALF = $20;
  999.     GFXF_BIG_BLITS = 1;
  1000.     LMN_REGION = $FFFFFFFF;
  1001.     VTAG_CHROMA_PEN_CLR = $80000008;
  1002.     SUPERHIRES = $20;
  1003.     GENLOCK_AUDIO = $100;
  1004.     STANDARD_VSSTOP = $3AA;
  1005.     VGA70_DENISE_MIN = $3B;
  1006.     MONITOR_ID_MASK = $FFFF1000;
  1007.     TODA_SAFE = 8;
  1008.     EXTENDED_MODE = $1000;
  1009.     MCOMPAT_NOBODY = $FFFFFFFF;
  1010.     GFXF_HR_DENISE = 2;
  1011.     LAYERSUPER = 4;
  1012.     VTAG_NORMAL_DISP_SET = $80000010;
  1013.     VARVBLANK = $1000;
  1014.     PF_FINE_SCROLL_MASK = $F;
  1015.     VGA_HBSTOP = $1E;
  1016.     GRAPHICSNAME = 'graphics.library';
  1017.     STANDARD_VIEW_X = $81;
  1018.     HIRESLACE_KEY = $8004;
  1019.     VGAPRODUCTLACEDPF_KEY = $39425;
  1020.     PROTO_MONITOR_ID = $51000;
  1021.     LACE = 4;
  1022.     STANDARD_VIEW_Y = $2C;
  1023.     VGA70_HBSTOP = $1E;
  1024.     LORESDPF2_KEY = $440;
  1025.     LAYERUPDATING = $10;
  1026.     GENLOCK_VIDEO = 2;
  1027.     HIRES = $8000;
  1028.     DTAG_DIMS = $80001000;
  1029.     MIN_PAL_ROW = $1D;
  1030.     STANDARD_VSSTRT = $2A6;
  1031.     RATIO_UNITY = $10;
  1032.     PFBA = $40;
  1033.     MIN_VGA_ROW = $1D;
  1034.     DIPF_IS_SPRITES = $40;
  1035.     VGAEXTRALORESDPF2_KEY = $31444;
  1036.     VGAEXTRAHALFBRITE_KEY = $31084;
  1037.     STANDARD_NTSC_BEAMCON = 0;
  1038.     VGA_HBSTRT = 8;
  1039.     DTAG_DISP = $80000000;
  1040.     MIN_VGA70_ROW = $23;
  1041.     FPB_DESIGNED = 6;
  1042.     VTAG_CHROMA_PEN_SET = $80000009;
  1043.     VTAG_CHROMAKEY_GET = $80000015;
  1044.     VGA70_HBSTRT = 8;
  1045.     DIPF_IS_WB = $100;
  1046.     VTAG_CHROMAKEY_CLR = $80000000;
  1047.     VTAG_ATTACH_CM_GET = $8000001B;
  1048.     NTSC_MONITOR_ID = $11000;
  1049.     BPLCON3_BRDNTRAN = $10;
  1050.     COLORMAP_TYPE_V1_2 = 0;
  1051.     LORESLACE_KEY = 4;
  1052.     VGAPRODUCT_KEY = $39024;
  1053.     SUPERDPF2_KEY = $8460;
  1054.     FPF_DESIGNED = $40;
  1055.     COLORMAP_TYPE_V1_4 = 1;
  1056.     DEFAULT_MONITOR_ID = 0;
  1057.     VGA_VBSTOP = $CCD;
  1058.     VGAEXTRALORESLACE_KEY = $31005;
  1059.     A2024FIFTEENHERTZ_KEY = $49000;
  1060.     VGA70_VBSTOP = $F73;
  1061.     MCOMPAT_MIXED = 0;
  1062.     VSOVERFLOW = $800;
  1063.     STANDARD_PAL_BEAMCON = $20;
  1064.     VGA_HSSTOP = $1C;
  1065.     HIRESLACEDPF_KEY = $8404;
  1066.     VPF_A2024 = $40;
  1067.     BOTTOMHIT = 2;
  1068.     PLNCNTMSK = 7;
  1069.     DI_AVAIL_NOMONITOR = 2;
  1070.     BWAITING = $100;
  1071.     INVERSVID = 4;
  1072.     VGA70_HSSTOP = $1C;
  1073.     CPRNXTBUF = 2;
  1074.     PAL_MONITOR_ID = $21000;
  1075.     VTAG_CHROMAKEY_SET = $80000001;
  1076.     VGA_VBSTRT = 0;
  1077.     SUPERLACE_KEY = $8024;
  1078.     VGA_MONITOR_ID = $31000;
  1079.     BOBSAWAY = $400;
  1080.     VTAG_ATTACH_CM_SET = $8000000B;
  1081.     VGALORESDPF2_KEY = $39444;
  1082.     BLITMSG_FAULT = 4;
  1083.     COLORMAP_TYPE_V36 = 1;
  1084.     VGA70_VBSTRT = 0;
  1085.     BPLCON3_EXTBLKZD = 2;
  1086.     VGA_HSSTRT = $E;
  1087.     DTAG_MNTR = $80002000;
  1088.     FSB_BOLD = 1;
  1089.     CSYNCTRUE = 4;
  1090.     CPR_NT_LOF = $8000;
  1091.     SPECIAL_BEAMCON = $1A88;
  1092.     FS_NORMAL = 0;
  1093.     FSB_EXTENDED = 3;
  1094.     FSB_COLORFONT = 6;
  1095.     VTAG_BORDERNOTRANS_GET = $80000018;
  1096.     VGA70_HSSTRT = $E;
  1097.     LAYERREFRESH = $80;
  1098.     CT_ANTIALIAS = 4;
  1099.     VTAG_BORDERNOTRANS_CLR = $80000006;
  1100.  
  1101.  
  1102.  
  1103.  
  1104. IMPLEMENTATION
  1105. end.
  1106.