Exemple #1
0
        private string machineCodeToParameter(byte[] _input)
        {
            string result = "";
            AssemblyTable table = new AssemblyTable();
            byte[] data = new byte[2];
            switch (_input[0]) //First argument mode
            {
                case 0x00:
                case 0x10:
                case 0x20:
                    //It's a register. Figure out which one
                    result += table.GetRegister(_input[2]);
                    break;

                case 0x01:
                    //It's a literal. Convert to hex
                    data[0] = _input[1];
                    data[1] = _input[2];
                    result += ("x" + ByteArrayToStringSimple(data));
                    break;

                case 0x02:
                case 0x12:
                case 0x22:
                    //Absolute RAM
                    data[0] = _input[1];
                    data[1] = _input[2];
                    result += ("@" + ByteArrayToStringSimple(data));
                    break;

                case 0x03:
                case 0x13:
                case 0x23:
                    //Indirect RAM
                    data[0] = _input[1];
                    data[1] = _input[2];
                    result += ("$" + ByteArrayToStringSimple(data));
                    break;

                case 0x04:
                case 0x14:
                case 0x24:
                    //Absolute RAM from register
                    result += ("@" + table.GetRegister(_input[2]));
                    break;

                case 0x05:
                case 0x15:
                case 0x25:
                    //Indirect RAM from register
                    result += ("$" + table.GetRegister(_input[2]));
                    break;
            }

            //Check for byte mode and add suffix if needed
            if (_input[0] > 0x0F)
            {
                if (_input[0] >= 0x10 && _input[0] <= 0x1F)//Lower byte
                {
                    result += ".L";
                }
                else if (_input[0] >= 0x20 && _input[0] <= 0x2F)//Upper byte
                {
                    result += ".U";
                }
            }

            return result;
        }
Exemple #2
0
        private string machineCodeToParameter(byte[] _input)
        {
            string        result = "";
            AssemblyTable table  = new AssemblyTable();

            byte[] data = new byte[2];
            switch (_input[0]) //First argument mode
            {
            case 0x00:
            case 0x10:
            case 0x20:
                //It's a register. Figure out which one
                result += table.GetRegister(_input[2]);
                break;

            case 0x01:
                //It's a literal. Convert to hex
                data[0] = _input[1];
                data[1] = _input[2];
                result += ("x" + ByteArrayToStringSimple(data));
                break;

            case 0x02:
            case 0x12:
            case 0x22:
                //Absolute RAM
                data[0] = _input[1];
                data[1] = _input[2];
                result += ("@" + ByteArrayToStringSimple(data));
                break;

            case 0x03:
            case 0x13:
            case 0x23:
                //Indirect RAM
                data[0] = _input[1];
                data[1] = _input[2];
                result += ("$" + ByteArrayToStringSimple(data));
                break;

            case 0x04:
            case 0x14:
            case 0x24:
                //Absolute RAM from register
                result += ("@" + table.GetRegister(_input[2]));
                break;

            case 0x05:
            case 0x15:
            case 0x25:
                //Indirect RAM from register
                result += ("$" + table.GetRegister(_input[2]));
                break;
            }

            //Check for byte mode and add suffix if needed
            if (_input[0] > 0x0F)
            {
                if (_input[0] >= 0x10 && _input[0] <= 0x1F)//Lower byte
                {
                    result += ".L";
                }
                else if (_input[0] >= 0x20 && _input[0] <= 0x2F)//Upper byte
                {
                    result += ".U";
                }
            }

            return(result);
        }