public OpcodeParamResult ParseLiteralParameter (OpcodeParamResult opcodeParamResult, string clearedParameter)
{
ushort literalValue;
if (clearedParameter.StartsWith("\'") && clearedParameter.EndsWith("\'") && clearedParameter.Length == 3)
{
literalValue = clearedParameter[1];
}
else if (clearedParameter.Contains("0x"))
{
literalValue = Convert.ToUInt16(clearedParameter, 16);
}
else if (clearedParameter.Trim().All(x => char.IsDigit(x)))
{
literalValue = Convert.ToUInt16(clearedParameter, 10);
}
else
{
opcodeParamResult.Param = (ushort)dcpuRegisterCodes.NextWord_Literal_Value;
opcodeParamResult.NextWord = true;
opcodeParamResult.LabelName = clearedParameter;
return opcodeParamResult;
}
ushort maxValue = 0x1F;
if (literalValue < maxValue)
{
opcodeParamResult.Param = 0x20;
opcodeParamResult.Param += literalValue;
}
else
{
opcodeParamResult.Param = (ushort)dcpuRegisterCodes.NextWord_Literal_Value;
opcodeParamResult.NextWord = true;
opcodeParamResult.NextWordValue = literalValue;
}
return opcodeParamResult;
}