-- OldBitBlt (tools version) (last edited by: Forrest, April 16, 1980 6:01 PM)
-- This is an ugly and sick conversion aid to princops BitBlt
DIRECTORY
BitBlt: FROM "BitBlt",
WindowDefs: FROM "WindowDefs" USING [BBoperation, BBsourcetype];
OldBitBlt: DEFINITIONS =
BEGIN
BBptr: TYPE = POINTER TO LongBBTable;
BBoperation: TYPE = WindowDefs.BBoperation;
BBsourcetype: TYPE = WindowDefs.BBsourcetype;
BITBLT: PROCEDURE [ptr: BBptr];
LongBBTable: TYPE = MACHINE DEPENDENT RECORD [
newBBTable: BitBlt.BBTable ← NULL,-- allow defaulting
d0: BOOLEAN ← TRUE,
pad: [0..2048) ← 0,
sourcetype: BBsourcetype,
function: BBoperation,
unused, unusedDbca: UNSPECIFIED ← 0,
dbmr: CARDINAL,-- destination raster width(in words)
dlx: CARDINAL,-- destination left x
dty: CARDINAL,-- destination top y
dw, dh: CARDINAL,-- block width and height
unusedSbca: UNSPECIFIED ← 0,
sbmr: CARDINAL,-- source raster width(in words)
slx: CARDINAL,-- source left x
sty: CARDINAL,-- source top y
gray0, gray1, gray2, gray3: CARDINAL,-- four words of "gray"
slbca: LONG POINTER,-- source long BaseCoreAddress
dlbca: LONG POINTER];-- destination long BaseCoreAddress
-- alignment issues
BBTableAlignment: CARDINAL = 16;
BBTableSpace: TYPE = ARRAY [0..SIZE[LongBBTable]+BBTableAlignment) OF UNSPECIFIED;
AlignedBBTable: PROCEDURE [ip: POINTER TO BBTableSpace] RETURNS [b: BBptr] =
INLINE BEGIN
align: TYPE = MACHINE DEPENDENT RECORD[
s: [0..LAST[WORD]/BBTableAlignment),
z: [0..BBTableAlignment)];
b ← LOOPHOLE[ip + BBTableAlignment - 1];
LOOPHOLE[b, align].z ← 0;
END;
GetBitBltTable: PROCEDURE RETURNS [bbt: LongBBTable];
END.
LOG
Time: April 13, 1980 7:12 PMBy: ForrestAction: Created file From Amargosa BitBlt (yeech!!!)
Time: April 16, 1980 6:00 PMBy: ForrestAction: Filed out LongBBTable to include Old BitBlt table in case we need it.