protected override Statement CursorCommand()
{
var exp = new MethodInvocation("CursorCommand");
var subOp = ReadByte();
switch (subOp)
{
case 0xDC: // SO_CURSOR_ON Turn cursor on
exp = new MethodInvocation(new MemberAccess(exp, "SetCursor")).AddArgument(true);
break;
case 0xDD: // SO_CURSOR_OFF Turn cursor off
exp = new MethodInvocation(new MemberAccess(exp, "SetCursor")).AddArgument(false);
break;
case 0xDE: // SO_CURSOR_SOFT_ON Turn soft cursor on
exp = new MethodInvocation(new MemberAccess(exp, "SetCursorSoft")).AddArgument(true);
break;
case 0xDF: // SO_CURSOR_SOFT_OFF Turn soft cursor off
exp = new MethodInvocation(new MemberAccess(exp, "SetCursorSoft")).AddArgument(false);
break;
case 0xE0: // SO_USERPUT_ON
exp = new MethodInvocation(new MemberAccess(exp, "SetUserInput")).AddArgument(true);
break;
case 0xE1: // SO_USERPUT_OFF
exp = new MethodInvocation(new MemberAccess(exp, "SetUserInput")).AddArgument(false);
break;
case 0xE2: // SO_USERPUT_SOFT_ON
exp = new MethodInvocation(new MemberAccess(exp, "SetUserInputSoft")).AddArgument(true);
break;
case 0xE3: // SO_USERPUT_SOFT_OFF
exp = new MethodInvocation(new MemberAccess(exp, "SetUserInputSoft")).AddArgument(false);
break;
case 0xE4: // SO_CURSOR_IMAGE Set cursor image
{
var imageIndex = Pop();
var obj = Pop();
exp = new MethodInvocation(new MemberAccess(exp, "SetCursorImage")).AddArguments(obj, imageIndex);
}
break;
case 0xE5: // SO_CURSOR_HOTSPOT Set cursor hotspot
{
var y = Pop();
var x = Pop();
exp = new MethodInvocation(new MemberAccess(exp, "SetCursorHotspot")).AddArguments(x, y);
}
break;
case 0xE6: // SO_CURSOR_TRANSPARENT Set cursor transparent color
exp = new MethodInvocation(new MemberAccess(exp, "SetCursorTransparentColor")).AddArgument(Pop());
break;
case 0xE7: // SO_CHARSET_SET
exp = new MethodInvocation(new MemberAccess(exp, "InitCharset")).AddArgument(Pop());
break;
case 0xE8: // SO_CHARSET_COLOR
exp = new MethodInvocation(new MemberAccess(exp, "SetCharsetColor")).AddArgument(GetStackList(4));
break;
case 0xE9: // SO_CURSOR_PUT
{
var y = Pop();
var x = Pop();
exp = new MethodInvocation(new MemberAccess(exp, "SetCursorPosition")).AddArguments(x, y);
}
break;
default:
throw new NotSupportedException(string.Format("CursorCommand: default case {0:X2}", subOp));
}
return exp.ToStatement();
}