-- BitBltDefs.mesa Edited by: Sandman, June 30, 1980 4:48 PM
DIRECTORY
Mopcodes USING [zBITBLT, zLI0];
-- Copyright Xerox Corporation 1979, 1980
BitBltDefs: DEFINITIONS =
BEGIN
BBptr: TYPE = POINTER TO BBTable;
BBoperation: TYPE = {replace, paint, invert, erase};
BBsourcetype: TYPE = {block, complement, andgray, gray};
BBTable: TYPE = MACHINE DEPENDENT RECORD [
ptrs: {short, long} ← short,
pad: [0..777B] ← 0,
sourcealt, destalt: BOOLEAN ← FALSE, -- TRUE to use alternate memory bank
sourcetype: BBsourcetype ← block,
function: BBoperation ← replace,
unused: CARDINAL ← 0,
dbca: POINTER ← NULL, -- destination BaseCoreAddress
dbmr: CARDINAL ← NULL, -- destination raster width(in words)
dlx: CARDINAL ← NULL, -- destination left x
dty: CARDINAL ← NULL, -- destination top y
dw: CARDINAL ← NULL,
dh: CARDINAL ← NULL,
sbca: POINTER ← NULL, -- source BaseCoreAddress
sbmr: CARDINAL ← NULL, -- source raster width(in words)
slx: CARDINAL ← NULL, -- source left x
sty: CARDINAL ← NULL, -- source top y
gray0: CARDINAL ← NULL, -- four words of "gray"
gray1: CARDINAL ← NULL,
gray2: CARDINAL ← NULL,
gray3: CARDINAL ← NULL, -- Below here is not used by nonXM, nonXMesa Altos
slbca: LONG POINTER ← NULL, -- source long BaseCoreAddress
dlbca: LONG POINTER ← NULL]; -- destination long BaseCoreAddress
BBTableSpace: TYPE = ARRAY [0..SIZE[BBTable]] OF UNSPECIFIED;
AlignedBBTable: PROCEDURE [p: POINTER TO BBTableSpace] RETURNS [BBptr] = INLINE
BEGIN RETURN[LOOPHOLE[p + LOOPHOLE[p, CARDINAL] MOD 2]] END;
BITBLT: PROCEDURE [ptr: BBptr] = MACHINE CODE
BEGIN Mopcodes.zLI0; Mopcodes.zBITBLT END;
END.