<> <> <> DIRECTORY Basics USING [BYTE], PrincOps USING [PageCount, PageNumber]; ColorDisplayFace: DEFINITIONS = BEGIN <> <> Mode: TYPE = RECORD[full, useA, useB: BOOL, lgBitsPerPixelA,lgBitsPerPixelB: [0..3]]; <> <> <> <> <> Color: TYPE = [0..256); -- an 8 bit color value (red, green, or blue) DisplayType: TYPE = {none, ramtek525, hitachi3619}; <> globalStateSize: READONLY NAT; -- number of words required by Initialize displayType: READONLY DisplayType; pixelsPerInch: READONLY NAT; -- size of a pixel <> width, height: READONLY NAT; -- raster dimensions in pixels (0,0 if disconnected) baseA, baseB: READONLY LONG POINTER; -- bitmap addresses (NIL if bitmap not in use) bplA, bplB: READONLY NAT; -- bitmap bits per line (0 if bitmap not in use) <> <> <<>> Initialize: PROC [globalState: LONG POINTER]; <> InitializeCleanup: PROC; <> <> <<>> HasMode: PROC [mode: Mode] RETURNS [BOOL]; <> PagesForMode: PROC [mode: Mode] RETURNS [PrincOps.PageCount]; <> Connect: PROC [mode: Mode, firstPage: PrincOps.PageNumber, nPages: PrincOps.PageCount]; <> Disconnect: PROC; <> TurnOn: PROC; <> TurnOff: PROC; <> Show: PROC [a, b: BOOL _ TRUE]; <> <> GetColor: PROC [pixelA, pixelB: Basics.BYTE _ 0] RETURNS [r,g,b: Color]; <> SetColor: PROC [pixelA, pixelB: Basics.BYTE _ 0, r, g, b: Color]; <> <> GetRedMap: PROC [in: Color] RETURNS [out: Color]; GetGreenMap: PROC [in: Color] RETURNS [out: Color]; GetBlueMap: PROC [in: Color] RETURNS [out: Color]; <> SetRedMap: PROC [in, out: Color]; SetGreenMap: PROC [in, out: Color]; SetBlueMap: PROC [in, out: Color]; <> END.