DIRECTORY PrincOps USING [zMISC, alpha]; BlockOps: CEDAR DEFINITIONS = BEGIN LookupRecord: TYPE = MACHINE DEPENDENT RECORD[ src: LONG POINTER TO CARDINAL, dst: LONG POINTER TO CARDINAL, table: LONG POINTER TO CARDINAL, srcSkip: CARDINAL, dstSkip: CARDINAL, count: CARDINAL ]; aTBLLOOKUP: PrincOps.alpha = 244B; aBlkOp: PrincOps.alpha = 245B; TableLookup: PROC[ptr: LONG POINTER TO LookupRecord] = TRUSTED MACHINE CODE { PrincOps.zMISC, aTBLLOOKUP }; BltOp: TYPE = MACHINE DEPENDENT { logAdd(0), logSubtract(1), and(2), or(3), xor(4), lastVal(LAST[CARDINAL]) }; OpBltRecord: TYPE = MACHINE DEPENDENT RECORD[ srcA: LONG POINTER TO CARDINAL, srcB: LONG POINTER TO CARDINAL, dst: LONG POINTER TO CARDINAL, count: CARDINAL, delta: CARDINAL, op: BltOp ]; OpBlt: PROC[ptr: LONG POINTER TO OpBltRecord] = TRUSTED MACHINE CODE { PrincOps.zMISC, aBlkOp }; END. ‚BlockOps.mesa Copyright c 1987 by Xerox Corporation. All rights reserved. Willie-Sue, January 18, 1988 1:09:58 pm PST FOR k: CARDINAL IN [0..TArgs.count) DO tArgs.dst[k*tArgs.dstSkip] _ tArgs.table[tArgs.src[k*tArgs.srcSkip]]; ENDLOOP; FOR k: CARDINAL IN [0..oArgs.count) DO dst[k*oArgs.delta] _ oArgs.op[a: oArgs.srcA[k*oArgs.delta], b: oArgs.srcB[k*oArgs.delta]]; ENDLOOP; ΚX˜šœ ™ Icodešœ Οmœ1™