Text preview for : KeyStreams.mesa_Oct77.pdf part of xerox KeyStreams.mesa Oct77 xerox mesa 3.0_1977 listing KeyStreams.mesa_Oct77.pdf



Back to : KeyStreams.mesa_Oct77.pdf | Home

keysTREAMS.mESA 24-0CT-77 18:30:50 Page 1


-- KeyStreams.Mesa Edited by Johnsson on September 22, 1977 8:23 AM
DIRECTORY
Keyboard: FROM "keyboard",
KeyOefs: FROM "keydefs",
Mopcodes: FROM "mopcodes",
StreamOefs: FROM "streamdefs",
Sys temOefs: FROM "systemdefs",
InlineOefs: FROM "inlinedefs",
ControlOefs: FROM "controldefs",
ProcessDefs: FROM "processdefs";
DEFINITIONS FROM ProcessOefs, InlineOefs, KeyOefs, StreamOefs;
KeyStreams: PROGRAM IMPORTS Keyboard, ProcessOefs. StreamDefs. SystemDefs
EXPORTS KeyDefs. StreamOefs SHARES ProcessDefs. StreamDefs =
BEGIN
-- The Stream part:
KS: PUBLIC Keyboard StreamObject ~ StreamObject [
ClearInputBuffer. Keyboard.ReadChar. PutBackChar,
WriteChar, Keyboard.InputBufferEmpty, DestroyKey.
Keyboard[a,a. ,]];
GetDefaultKey: PUBLIC PROCEDURE RETURNS [KeyboardHandle)
BEGIN
RETURN[@KS);
END;
GetCurrentKey: PUBLIC PROCEDURE RETURNS [KeyboardHandle]
BEGIN
RETURN[Keyboard.ks];
END;
CreateKeyStream: P'JBLIC PROCEDURE RETURNS [KeyboardHandle] =
BEGIN OPEN SystemDefs;
s: KeyboardHandle ~
SystemDefs.AllocateHeapNode[SIZE[Keyboard StreamObject]];
S1' ~ KS;
s.buffer ~ LOOPHOLE[BASE[s.bstring],STRING);
s.in ~ s.out ~ a;
RETURN[s];
END;
ControlDELtyped: PUBLIC PROCEDURE RETURNS [BOOLEAN]
BEGIN RETURN[Keyboard.COT] END;
ResetControlDEL: PUBLIC PROCEDURE
BEGIN Keyboard.CDT ~ FALSE END;
OpenKeyStream: PUBLIC PROCEDURE [stream:StreamHandle]
BEGIN
WITH s:stream SELECT FROM
Keyboard => Keyboard.ks ~ @s;
ENDCASE =) SIGNAL StreamError[stream.StreamType];
RETURN;
END;
ClearlnputBuffer: PROCEDURE [stream:StreamHandle)
BEGIN
WITH s: stream SELECT FROM
Keyboard =) s. in ~ S.out ~ 0;
ENOCASf => SIGNAL SLreamError[stream.StreamType];
RrTURN;
END;
SeLIclleProc: PUB I IC PROCEDURE [p: PROCroURE]
BfGIN Keyboard.IdleProc ~ pEND;
ResetIl1l8Proc: PUB I IC PROcrDURf =
BrGIN Keyboard, IdlePr'oc .. I OOPHOI f[O] [NO;
PutBackCIHlr: PROcrOUR[ [sLrearn:SLr'ellmHandle. cllar:LJNSPfCIrIfD]
BfGIN newoul: CARDINAl;
keysTREAMS.mESA 24-0CT-77 18:30:50 Page 2


WITH s:stream SELECT FROM
Keyboard =)
BEGIN
newout .. s.out;
newout ..
IF newout = 0
THEN KeyBufChars-l
ELSE newout-l;
IF newout # s.ln THEN
BEGIN
s.out .. newout:
s.buffer[s.out] .. char;
END;
END;
ENDCASE =) SIGNAL StreamError[stream,StreamType];
RETURN;
END;
WriteChar: PROCEDURE [stream:StreamHandle, char:UNSPECIFIED]
BEGIN
SIGNAL StreamError[stream,StreamAccess];
RETURN
END;
CloseKeyStream: PUBLIC PROCEDURE [stream:StreamHandle]
BEGIN
WITH s:stream SELECT FROM
Keyboard =) Keyboard.ks .. @KS;
ENDCASE =) SIGNAL StreamError[stream,StreamType];
RETURN;
END;
DestroyKey: PROCEDURE [stream:StreamHandle] =
BEGIN OPEN SystemDefs;
WITH s:stream SELECT FROM
Keyboard =) FreeHeapNode[@s];
ENDCASE =) SIGNAL StreamError[stream,StreamType];
RETURN:
END;
CursorTrack: PUBLIC PROCEDURE [b: BOOLEAN] =
BEGIN
Keyboard.cursorTracking .. b;
RETURN
END;


KeyTable: ARRAY [0 .. 80) OF Key Item .. [
-- MEMORY[177033B] Index [a, ,15]
KeyItem[FALSE, 0, 0], UNUSED
KeyItem[FALSE, 0, 0], UNUSED
KeyItem[FALSE, 0, 0], UNUSED
Keyltem[FALSE, 0, 0], UNUSED
KeyItem[FALSE, 0, 0], UNUSED
KeyItem[FALSE, 0, 0], UNUSED
KeyItem[FALSE, O. 0], UNUSED
KeyItem[FALSE, 0, 0], UNUSED
Keyltem[FALSE, 0, 0], KeyItemset1
KeyItem[FALSE, 0, 0], Key I temset2
Keyllem[FAISr, 0, 0]. KeyT Lemset3
KeyT tem[rALSE, 0, 0]. Key I temse t4
KeyTlem[fALS[, O. 0], Key! temset5
KeyJtem[rALSE, 0, 0], Red
KeyTtem[fAISE, 0, 0], Blue
KeyTtem[rAISr, 0, 0], Ye 11 ow
-- MEMORY[1770348] Index [16 .. 31]
KeyTtem[fAISE, 458, 65B], %,5
KeyTtem[r AI Sf, 44B, 64B]. $,4
KeyTLem[fAISE, 176B, 66B], -,6
KeyTtem[TRUE, 105B, 145B], E
KeyTtem[rAISr. 46B, 67B], &.7
KeyTtem[TRUr, 10411, 144B], 0
KeyTtem[TRUE, 125B, 165B]. U
KeyTtem[TRUF, 126B. 166B], V
KeyT Lem[rALSr, 51B, 60B]. ),0
keysTREAMS.mESA 24-0CT-77 18:30:50 Page 3


KeyItem[TRUE. 113B. 153B]