DIRECTORY PrincOps USING [wordsPerPage], VM USING [Interval]; RavenFace: DEFINITIONS = BEGIN MaxBands:CARDINAL = 8; BandBufferCount: TYPE = CARDINAL (FIRST[CARDINAL]..MaxBands]; Index: TYPE [1]; BandPointer: TYPE = LONG POINTER; ResolutionPair: TYPE = ARRAY {fast, slow} OF CARDINAL; resolution: READONLY ResolutionPair; SizePair: TYPE = ARRAY {fast, slow} OF CARDINAL; size: READONLY SizePair; DozeOff: PROC; WakeUp: PROC; AllocateBands: PROC [bandVM: VM.Interval, nBands: (0..MaxBands], sizeEachBand: CARDINAL]; InitializeCleanUp: PROC; SetInterruptMasks: PROC [control, status, data: WORD]; DeallocateBands: PROC; ConsoleCharacter: TYPE = MACHINE DEPENDENT{ (0), F(57B), zero(60B), one, two, three, four, five, six, seven, eight(70B), nine, A, L, C, D, E, blank(77B)}; Display: PROC [char: ConsoleCharacter]; PaperSource: TYPE = MACHINE DEPENDENT{bottom(0), top(1)}; PaperStacking: TYPE = MACHINE DEPENDENT{aligned(0), offset(1)}; Feed: PROC [paperSource: PaperSource, paperStacking: PaperStacking]; PrinterStatus: TYPE = MACHINE DEPENDENT{ noStatus(0B), key0(60B), key1(61B), key2(62B), key3(63B), key4(64B), key5(65B), key6(66B), key7(67B), key8(70B), key9(71B), keyClear(72B), keyTest(73B), keyOnLine(74B), keyOffLine(75B), (76B), (77B), warming(100B), standBy(101B), feederFault(102B), registrationJam(104B), fuserJam(105B), noExit(106B), interlockOpen(110B), fuserCold(111B), feeding(112B), readyToFeed(113B), displayAcknowledge(114B), parityError(115B), illegalCharacter(116B), illegalSequence(117B), (120B), noPaper(121B), pageSync(122B), pageAtOutputTray(123B), tonerLow(124B), goingOffLine(125B), offLine(126B), onLine(127B), outputTrayFull(130B), aboutToDozeOff(131B), (174B), statusError(176B), statusOverRun(177B)}; SolicitStatus: PROC RETURNS [status: PrinterStatus]; ReadStatus: PROC RETURNS [status: PrinterStatus]; SetScanLineLength: PROC [activeWordsEachScanline: (0..PrincOps.wordsPerPage]]; SetPageOffsets: PROC [linesFromLeft: CARDINAL, wordTabFromBottom: CARDINAL]; ResetBands: PROC RETURNS [firstBand: Index, firstBandAddress: BandPointer]; StartImage: PROC [firstBand: Index];-- start imaging BandOverrun: PROC RETURNS [BOOLEAN];-- imaging got ahead of filling. AdvanceBand: PROC [currentBand: Index] RETURNS [nextBand: Index, nextBandAddress: BandPointer]; BandFull: PROC [band: Index] RETURNS [bandBusy: BOOLEAN]; LastBand: PROC [Index];-- indicate last band is filled PutCommand: PROCEDURE [CARDINAL [0B..200B)]; END.... ΦRavenFace.mesa Copyright (C) 1980, 1981, 1982, 1985 by Xerox Corporation. All rights reserved. last edit by Grundler on 26-Sep-84 1:40:21 last edit by Gobbel on January 22, 1981 3:27 PM last edit by Jarvis on July 7, 1980 5:02 PM last edit by Olmstead on August 28, 1980 11:41 AM last edit by Forrest on 16-Mar-82 13:14:35 last edit by Pany on October 15, 1981 10:08 AM. Tim Diebert: November 17, 1985 3:55:49 pm PST Fuser/ROS Control: Initialization, Device Cleanup. bandVM is VM.Interval of at least (nBands*sizeEachBand)+slop pages long. Slop pages is provided for the drivers convenience. There is a time tradeoff associated with checking to make sure an item is going to fit; if the driver choses it may ask for slopPages after the last band which it may write into while composing bands. Console Character Paper Control Status The same as SolicitStatus except that a Read Status command is sent. Reset and describe Bands, image, and advance bands. A band consists of sizeEachBands pages, with one scan line residing in each page.A line goes in portrait mode from bottom to top of page; lines are scanned from left to right accross the page. Bands are filled by clients, and imaged by the LSEP indicate the number of words to make up each scanLine indicate where first band and beginning of each band is printed. this band filled; mark for imagingget next band to fill.nextBand should not be refilled untill BandFull[nextBand]=FALSE. see if band has been imaging. Diagnostic use Κ˜code™KšœP™PKšΟc*™*Kš/™/Kš+™+Kš1™1Kš*™*Kš/™/Kšœ-™-—K™K˜šΟk ˜ Kšœ žœ˜Kšžœžœ ˜—K˜K˜KšΠln œž œž˜˜Kšœ žœ˜Kš œžœžœžœžœ ˜=K˜Kšœžœ˜Kšœ žœžœžœ˜!K˜Kš œžœžœžœžœ˜6Kšœ žœ˜$K˜Kš œ žœžœžœžœ˜0Kšœžœ ˜K˜Kšœ™KšΟnœžœ˜Kš œžœ˜ K˜Kšœ™š  œžœ žœ0žœ˜YKšœH™HKšœD™DKšœH™HKšœG™GKšœ(™(—K˜Kš œžœ˜K˜Kš œžœžœ˜6K˜Kš œžœ˜K˜Kšœ™šœžœžœž œ˜+Kšœ ˜ Kšœ3˜3Kšœ-˜-—K˜Kš œžœ˜'K˜Kšœ ™ Kšœ žœžœž œ˜9Kšœžœžœž œ˜?K˜Kš œžœ:˜DK˜Kšœ™šœžœžœž œ˜(Kšœ ˜ Kšœ+˜+Kšœ+˜+Kšœ2˜2Kšœ.˜.Kšœ0˜0Kšœ4˜4Kšœ4˜4Kšœ˜Kšœ,˜,Kšœ.˜.Kšœ>˜>Kšœ@˜@Kšœ+˜+Kšœ0˜0—K˜Kš  œžœžœ˜4š  œžœžœ˜1KšœD™D—˜Kšœ3™3KšœK™KKšœO™OKšœ$™$Kšœ3™3—K˜š œžœ7˜NKšœ5™5—K˜š œžœžœžœ˜LKšœ@™@—K˜Kš  œžœžœ3˜KK˜Kš  œžœ˜5K˜Kš   œžœžœžœ ˜DK˜Kš  œžœ˜&šžœ1˜8KšœG™GKšœ0™0—K˜š œžœžœ žœ˜9Kšœ™—K˜Kš œžœ ˜6K˜Kšœ™Kš  œž œžœ ˜,K˜Kšžœ˜——…— ²₯