DIRECTORY PrincOps USING [PageCount, PageNumber, wordsPerPage]; LSEPFace: DEFINITIONS = BEGIN MaxBands: CARDINAL = 8; BandBufferCount: TYPE = CARDINAL (FIRST[CARDINAL]..MaxBands]; Index: TYPE [1]; BandPointer: TYPE = LONG POINTER; AllocateBands: PROC [ bandVirtualPageNumber: PrincOps.PageNumber, nBands: BandBufferCount, sizeEachBand: PrincOps.PageCount, slop: PrincOps.PageCount]; DeallocateBands: PROC; SetInterruptMasks: PROC [control, status, data: WORD]; InitializeCleanUp: PROC; SetScanLineLength: PROC [activeWordsEachScanline: (0..PrincOps.wordsPerPage]]; SetPageOffsets: PROC [wordsFast: CARDINAL, linesSlow: CARDINAL]; ResetBands: PROC RETURNS [firstBand: Index, firstBandAddress: BandPointer]; ZeroBands: PROC; -- zero all bands 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: PROC [command: BYTE]; GetStatus: PROC RETURNS [status: BYTE]; END.... XXJ : Created file March 6, 1980 1:30 PM XXJ : June 8, 1980 10:04 PM Added SolictStatus, Mesa 6.0 clean up XXJ : June 30, 1980 1:24 PM Deleted SetActiveScan, SetLineBufferSize. Added SetLineParameters, changes for new microcode XXJ : July 7, 1980 5:01 PM Added status to SetInterruptMasks parameters XXO : August 17, 1980 5:08 PM Changed parameter n in AllocateBands from PageCount to CARDINAL, added CARDINAL MaxBands and SIGNAL TooManyBands. XXO : August 28, 1980 11:41 AM Changed Display to only send one character. FXH : November 12, 1980 12:44 PM Eliminate sorter, add stacker. change rendering to imaging. RXG : January 22, 1981 3:27 PM Change Allocate.nBands from [) to (]. Change SetScanLineLength.activeWordsEachScanLine from [) to []. XXO : June 25, 1981 5:31 PM Added resolution, resolutionPair, BandBufferCount, PrinterCommand and PutCommand and changed AllocateBands.nBands to BandBufferCount. XXP : July 23, 1981 11:04 AM. Added "PrinterCode" and changed "PrinterCommand", "PutCommand", "PrinterStatus". XXP : August 12, 1981 8:36 PM. Added "DozeOff", "WakeUp" PROCEDUREs and "PrinterStatus" "tonerLow(124B)", "onLine(127B)" elements. XXP : September 26, 1981 6:23 PM. Removed "bandVirtualPageNumber" from "AllocateBands"'s argument list. XXP : October 15, 1981 10:02 AM. Added "PrinterStatus" "statusError(176B)" to represent IOT status detected by IOP microcode as erroneous (wrong parity, etc.). This used to be reported -- improperly -- as "illegalCharacter(116B)" in previous versions of the microcode. The microcode is about to be updated officially, at the time of this writing. FXH 11-Nov-81 8:11:02 Merged Claude's changes (except removal of bandVirtualPageNumber) to Pilot version of face. FXH 16-Mar-82 13:23:01 Changed ConsoleChar to allow for 'F, added aboutToDozeOff. Time: 26-Sep-84 1:40:20 By: DXG Action: Added copyright notice and rebuild for 11.1 release. NXS: 7-Jun-85 11:42:00 Created device independant version, changed name from RavenFace to LSEPFace for 12.0. ”LSEPFace.mesa Copyright Σ 1980, 1981, 1982, 1985, 1986 by Xerox Corporation. All rights reserved. Willie-sue, October 24, 1986 3:13:35 pm PDT Doug Wyatt, December 11, 1986 11:13:22 am PST Taken from: [Huey: Osbu North]12.2>Faces>Public>LSEPFace.mesa - ??? A band consists of sizeEachBand pages, with one scan line residing in each page. Bands are filled by clients, and imaged by the LSEP bandVirtualPageNumber should be the starting page of an unmapped chunk of virtual memory (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. Assigns LSEP interrupts to Naked Condition masks Video imaging control indicate the number of words to make up each scanLine indicate where first band (slow) and beginning of each band (fast) is printed. this band filled; mark for imaging get next band to fill. nextBand should not be refilled untill BandFull[nextBand] = FALSE. see if band has been imaging. Command/Status control Κς˜code™ KšœU™UK™+K™-K™™ Kšœ?™?——K˜K˜šΟk ˜ Kšœ œ'˜5—K˜KšΟnœ œ˜˜Kšžœœ˜Kš œœœœœ ˜=—˜Kšœœ˜Kšœ œœœ˜!—˜KšœP™PKšœ3™3—˜šž œœ˜KšœD˜DKšœ<˜