-- StreamAltoDefault.mesa last edited by: HGM on: January 15, 1981 10:44 PM DIRECTORY Environment USING [Block, Byte], Stream; StreamAltoDefault: PROGRAM EXPORTS Stream = BEGIN OPEN Stream; Unimplemented: ERROR = CODE; LeftAndRight: TYPE = MACHINE DEPENDENT RECORD [left, right: Environment.Byte]; -- Stream implementation (defaults) defaultObject: PUBLIC Object _ [options: defaultInputOptions, getByte: DefaultGetByte, putByte: DefaultPutByte, getWord: DefaultGetWord, putWord: DefaultPutWord, get: DefaultGet, put: DefaultPut, setSST: NIL, sendAttention: NIL, waitAttention: NIL, delete: NIL]; DefaultGetByte: PROCEDURE [sH: Handle] RETURNS [byte: Byte] = BEGIN array: PACKED ARRAY [0..1] OF Byte; options: InputOptions = [FALSE, FALSE, FALSE, TRUE, TRUE]; IF sH.get = DefaultGet THEN ERROR Unimplemented; [] _ sH.get[sH, Block[@array, 1, 2], options]; RETURN[array[1]] -- right-justify the byte END; DefaultGetWord: PROCEDURE [sH: Handle] RETURNS [word: Word] = BEGIN OPEN w: LOOPHOLE[word, LeftAndRight]; options: InputOptions = [FALSE, FALSE, FALSE, TRUE, TRUE]; SELECT TRUE FROM sH.getByte ~= DefaultGetByte => BEGIN w.left _ sH.getByte[sH]; w.right _ sH.getByte[sH]; END; sH.get ~= DefaultGet => [] _ sH.get[sH, Block[@word, 0, 2], options]; ENDCASE => ERROR Unimplemented; END; DefaultGet: PROCEDURE [sH: Handle, block: Block, options: InputOptions] RETURNS [ bytesTransferred: CARDINAL, why: CompletionCode, sst: SubSequenceType] = BEGIN ERROR Unimplemented; END; DefaultPutByte: PROCEDURE [sH: Handle, byte: Byte] = BEGIN array: PACKED ARRAY [0..1] OF Byte _ [0, byte]; IF sH.put = DefaultPut THEN ERROR Unimplemented; sH.put[sH, Block[@array, 1, 2], FALSE]; END; DefaultPutWord: PROCEDURE [sH: Handle, word: Word] = BEGIN OPEN w: LOOPHOLE[word, LeftAndRight]; SELECT TRUE FROM sH.putByte ~= DefaultPutByte => BEGIN sH.putByte[sH, w.left]; sH.putByte[sH, w.right]; END; sH.put ~= DefaultPut => sH.put[sH, Block[@word, 0, 2], FALSE]; ENDCASE => ERROR Unimplemented; END; DefaultPut: PROCEDURE [sH: Handle, block: Block, endPhysicalRecord: BOOLEAN] = BEGIN ERROR Unimplemented; END; END.