DIRECTORY Basics USING [BITAND, bitsPerWord], RasterControllerDorado; RasterControllerFace: CEDAR DEFINITIONS IMPORTS Basics ~ BEGIN OPEN RasterControllerDorado; bitsPerWord: NAT ~ Basics.bitsPerWord; hardwareScanlineWords: READONLY NAT; hardwareScanlinePages: READONLY NAT; ChannelProc: TYPE ~ PROC [channel: ExtendedChannel, whatChanged, statusNow: LTStatus]; RegisterChannelProc: PUBLIC PROC [channel: ExtendedChannel, proc: ChannelProc]; StartMicrocode: PUBLIC PROC [mrb: MRBPointer] RETURNS [ok: BOOL]; ResetMicrocode: PUBLIC PROC; ShutupMicrocode: PUBLIC PROC; SetUpForRealLineSync: PROC; SetUpForFakeLineSync: PROC; SetUpForRosClock: PROC; SetUpForFakeClock: PROC; SetUpForTestClock: PROC; LineSync: PROC; FakePixelClock: PROC; CheckConfig: PROC RETURNS [HardwareConfig]; InitializeMRB: PROC [ mrb: MRBPointer, stb: STBPointer _ NIL, aRCB, bRCB, cRCB: RCBPointer _ NIL, ccb: CCBPointer _ NIL, flags: CARDINAL _ 0]; InitializeRCB: PROC [ rcb, next: RCBPointer _ NIL, bitmap: LONG POINTER _ NIL, activeWordsPerLine: CARDINAL _ 0, wordsPerLine: CARDINAL _ 0, lines: INTEGER _ 0, --Total number of scans to read fMargin: CARDINAL _ 0, sRepeat, fRepeat: INTEGER _ 0, sReverse, fReverse: BOOL _ FALSE, mosaic: BOOL _ FALSE, bitsPerSample: [0..bitsPerWord] _ 1]; InitializeCCB: PROC [ ccb, next: CCBPointer _ NIL, bitmap: LONG POINTER _ NIL, words: CARDINAL _ 0, lines: INTEGER _ 0, --Total number of scans to read fMargin: CARDINAL _ 0, sRepeat, fRepeat: INTEGER _ 0, sReverse, fReverse: BOOL _ FALSE, bitsPerSample: [0..bitsPerWord] _ 1, cursorCtl: CursorCtl _ defaultCursorCtl, modeCtl: ModeCtl _ defaultModeCtl, halftoneCtl: HalftoneCtl _ defaultHalftoneCtl, selCtl: SelCtl _ defaultSelCtl]; RoundUpC: PROC [val, size: CARDINAL] RETURNS [CARDINAL] ~ INLINE { RETURN[Basics.BITAND[val+(size-1), CARDINAL.LAST-(size-1)]]; }; BitsPerSample: PROC [lgBitsPerPixel: [0..4]] RETURNS [[0..bitsPerWord]]; END. RasterControllerFace.mesa Copyright Σ 1985, 1986, 1987 by Xerox Corporation. All rights reserved. Tim Diebert, September 3, 1985 11:52:24 am PDT Dave Rumph, February 24, 1987 6:07:23 pm PST The ChannelProc will be called when something interesting happens for that channel. The proc is called at priorityRealTime under a MONITOR, so it can BROADCAST or NOTIFY, but has to do what it does quickly. The client should register NIL before the going away if the proc is nested, and the frame is going away. Κq˜šœ™IcodešœH™HK™.K™,—K˜šΟk ˜ Kšœœœ ˜#K˜—K˜KšΠlnœœ ˜'Kšœ˜šœœœ˜$K˜Kšœ œ˜&K˜Kšœœœ˜$Kšœœœ˜$Icode2šœ œœ>˜VšΟnœœœ/˜OL™Ή—Lš Ÿœœœœœ˜ALšŸœœœ˜LšŸœœœ˜LšŸœœ˜LšŸœœ˜LšŸœ˜LšŸœœ˜LšŸœœ˜LšŸœœ˜LšŸœœ˜LšŸ œœœ˜+Lš Ÿ œœ&œ!œœ œ˜ŽLš Ÿ œœœ œœœœœ œΟc œ œœœœ œœ'˜ΤLšŸ œœœ œœœ œ œ  œ œœœœΒ˜°š Ÿœœ œœœœ˜BKšœœœœ ˜