-- Compiler HBltDefs.mesa     
-- Written by Bob Lyon
-- Updated: September 26, 1980  4:51 PM
 
DIRECTORY
BitBltDefs:  FROM "BitBltDefs" USING [BBoperation],
SegmentDefs:   FROM "SegmentDefs",
Mopcodes:    FROM "Mopcodes";

HBltDefs: DEFINITIONS =
    BEGIN
    OPEN BitBltDefs, SegmentDefs;

    -- Constants
	HBltInRAM:	PRIVATE CARDINAL = 550B;
	XHBltInRAM:	PRIVATE CARDINAL = 550B;
	
    -- Types
    HBTable: TYPE = MACHINE DEPENDENT RECORD
	    [
	    pad:	[0 .. 17777B],
	    function:	BBoperation,
	    destalt:	BOOLEAN,  -- TRUE => use alt mem bank
	    dbca:	POINTER,  -- beginning addr of map
	    dbmr:	CARDINAL, -- no. words per scanline	
	    y:		CARDINAL, -- scanline no.
	    x1:		CARDINAL, -- begin x coordinate
	    x2:		CARDINAL, --  end  x coordinate
	    gray:	CARDINAL  -- gray pattern description
	    ];
    -- WARNING WARNING WARNING x2 >= x1 or else NOP !!!!!!!!  WARNING
    HBptr:  TYPE = POINTER TO HBTable;

-- Procedures
HBlt: PUBLIC PROCEDURE [HB: HBptr] =
    MACHINE CODE BEGIN
    Mopcodes.zLIW, HBltInRAM / 256, HBltInRAM MOD 256;
    Mopcodes.zJRAM
    END;

-- bank was SegmentDefs.BankIndex
XHBlt: PUBLIC PROCEDURE [HB: HBptr, bank: CARDINAL] =
    MACHINE CODE BEGIN
    Mopcodes.zLIW, XHBltInRAM / 256, XHBltInRAM MOD 256;
    Mopcodes.zJRAM
    END;

END.