93 lines
2.4 KiB
Plaintext
93 lines
2.4 KiB
Plaintext
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Microsoft Research Singularity
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// File: UnicodePipeContract.sg - Contract between processes for STDIO pipes
|
|
//
|
|
|
|
using System;
|
|
using System.Runtime.InteropServices;
|
|
using Microsoft.SingSharp;
|
|
using Microsoft.Singularity;
|
|
using Microsoft.Singularity.Channels;
|
|
using Microsoft.Singularity.Naming;
|
|
using Microsoft.Singularity.Io;
|
|
|
|
namespace Microsoft.Singularity.Io
|
|
{
|
|
public contract UnicodePipeContract
|
|
{
|
|
in message Write(char[]! in ExHeap buffer, int offset, int count);
|
|
out message AckWrite(char[]! in ExHeap buffer);
|
|
|
|
// start state
|
|
state READY : Write? -> ACK;
|
|
state ACK : AckWrite! -> READY;
|
|
|
|
// For sending an Exp side pipe initially, create channel in this state
|
|
// NewChannel(out imp, out exp, UnicodePipeContract.EXPMOVABLE.Value);
|
|
state EXPMOVABLE : Moved! -> READY;
|
|
out message Moved();
|
|
|
|
}
|
|
}
|
|
|
|
namespace Microsoft.Singularity.Io.Tty2006
|
|
{
|
|
public enum Modifiers {
|
|
SHIFT = 1,
|
|
CTRL = 2,
|
|
ALT = 4
|
|
}
|
|
|
|
public enum ControlCodes {
|
|
CTRL_C = 0x3,
|
|
CTRL_Z = 26,
|
|
}
|
|
|
|
public enum EscapeCodes {
|
|
HOME = 1,
|
|
INSERT = 2,
|
|
DELETE = 3,
|
|
END = 4,
|
|
PAGE_UP = 5,
|
|
PAGE_DOWN = 6,
|
|
CENTER = 7,
|
|
BACKSPACE = 8,
|
|
TAB = 9,
|
|
ENTER = 10,
|
|
ESCAPE = 11,
|
|
F1 = 12,
|
|
F2 = 13,
|
|
F3 = 14,
|
|
F4 = 15,
|
|
F5 = 16,
|
|
F6 = 17,
|
|
F7 = 18,
|
|
F8 = 19,
|
|
F9 = 20,
|
|
F10 = 21,
|
|
F11 = 22,
|
|
F12 = 23,
|
|
F13 = 24,
|
|
F14 = 25,
|
|
F15 = 26,
|
|
F16 = 27,
|
|
F17 = 28,
|
|
F18 = 29,
|
|
F19 = 30,
|
|
F20 = 31,
|
|
SPACE = 32,
|
|
UP = 33,
|
|
DOWN = 34,
|
|
RIGHT = 35,
|
|
LEFT = 36,
|
|
ERASE_FROM_CURSOR = 100,
|
|
SET_CURSOR_SIZE = 101,
|
|
CLEAR_SCREEN = 102,
|
|
NOCODE = 999,
|
|
}
|
|
}
|