--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 November 12, 1980 2:56 PM
DIRECTORY
Environment USING [PageCount, PageNumber, wordsPerPage];
RavenFace: DEFINITIONS =
BEGIN
MaxBands: CARDINAL = 8;
Index: TYPE [1];
BandPointer: TYPE = LONG POINTER;
-- Initialization, Device Cleanup.
AllocateBands: PROC [
bandVirtualPageNumber: Environment.PageNumber,
nBands: (0..MaxBands],
sizeEachBand: Environment.PageCount];
InitializeCleanUp: PROC;
SetInterruptMasks: PROC [control, status, data: WORD];
DeallocateBands: PROC;
-- Console Character
ConsoleCharacter: TYPE = MACHINE DEPENDENT {
zero(0), one, two, three, four, five, six, seven, eight, nine, A, L, C, D, E,
blank(15)};
Display: PROC [char: ConsoleCharacter];
-- Paper Control
PaperSource: TYPE = MACHINE DEPENDENT {bottom(0), top(1)};
PaperStacking: TYPE = MACHINE DEPENDENT {aligned(0), offset(1)};
Feed: PROC [paperSource: PaperSource, paperStacking: PaperStacking];
-- Status
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), (107B),
interlockOpen(110B), fuserCold(111B), feeding(112B), readyToFeed(113B),
displayAcknowledge(114B), parityError(115B), illegalCharacter(116B),
illegalSequence(117B),
(120B), noPaper(121B), pageSync(122B), pageAtOutputTray(123B),
(124B), goingOffLine(125B), offLine(126B), (127B),
outputTrayFull(130B),
statusOverRun(177B)};
SolicitStatus: PROC; -- suggest to printer you'd like to find out what's happening
GetStatus: PROC RETURNS [status: PrinterStatus];
-- 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
SetScanLineLength: PROC [activeWordsEachScanline: [0..Environment.wordsPerPage]];
-- indicate the number of words to make up each scanLine
SetPageOffsets: PROC [linesFromLeft: CARDINAL, wordTabFromBottom: CARDINAL];
-- indicate where first band and beginning of each band is printed.
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];
-- this band filled; mark for imaging get next band to fill. nextBand should
-- not be refilled untill BandFull[nextBand]=FALSE.
BandFull: PROC [band: Index] RETURNS [bandBusy: BOOLEAN];
-- see if band has been imaging.
LastBand: PROC [Index]; -- indicate last band is filled
END....
Jarvis: Created file March 6, 1980 1:30 PM
Jarvis: June 8, 1980 10:04 PM Added SolictStatus, Mesa 6.0 clean up
Jarvis: June 30, 1980 1:24 PM Deleted SetActiveScan, SetLineBufferSize. Added SetLineParameters, changes for new microcode
Jarvis: July 7, 1980 5:01 PM Added status to SetInterruptMasks parameters
Olmstead: August 17, 1980 5:08 PM Changed parameter n in AllocateBands from PageCount to CARDINAL, added CARDINAL MaxBands and SIGNAL TooManyBands.
Olmstead: August 28, 1980 11:41 AM Changed Display to only send one character.
Forrest: November 12, 1980 12:44 PM Eliminate sorter, add stacker. change rendering to imaging.
Gobbel: January 22, 1981 3:27 PM Change Allocate.nBands from [) to (]. Change SetScanLineLength.activeWordsEachScanLine from [) to [].