Пример #1
0
        private bool ToggleLabelMode()
        {
            bool labelMode = !m_LabelMode;

            MainForm.m_CompileResult.ClearMessages();
            Parser.BasicFileParser parser = new C64Studio.Parser.BasicFileParser(DocumentInfo.FullPath);
            parser.LabelMode = m_LabelMode;
            if (!parser.Parse(editSource.Text, null, C64Studio.Types.AssemblerType.AUTO))
            {
                MainForm.m_CompileResult.UpdateFromMessages(parser, DocumentInfo.Project);
                MainForm.m_CompileResult.Show();
                btnToggleLabelMode.Checked = false;
                return(false);
            }
            string result;

            if (labelMode)
            {
                result = parser.EncodeToLabels();
            }
            else
            {
                result = parser.DecodeFromLabels();
            }

            if (parser.Errors > 0)
            {
                MainForm.m_CompileResult.UpdateFromMessages(parser, DocumentInfo.Project);
                MainForm.m_CompileResult.Show();
                return(false);
            }
            editSource.Text = result;
            m_LabelMode     = labelMode;
            return(true);
        }
Пример #2
0
        private GR.Memory.ByteBuffer TestCompile(string Source)
        {
            C64Studio.Parser.BasicFileParser parser = new C64Studio.Parser.BasicFileParser();

            C64Studio.Parser.CompileConfig config = new C64Studio.Parser.CompileConfig();
            config.OutputFile = "test.prg";
            config.TargetType = C64Studio.Types.CompileTargetType.PRG;
            config.Assembler  = C64Studio.Types.AssemblerType.C64_STUDIO;

            Assert.IsTrue(parser.Parse(Source, null, config));
            Assert.IsTrue(parser.Assemble(config));

            return(parser.AssembledOutput.Assembly);
        }
Пример #3
0
        public void TestRenumberWithSpaces()
        {
            string source = @"20 ifa=1then 20";

            C64Studio.Parser.BasicFileParser parser = new C64Studio.Parser.BasicFileParser();

            C64Studio.Parser.CompileConfig config = new C64Studio.Parser.CompileConfig();
            config.OutputFile = "test.prg";
            config.TargetType = C64Studio.Types.CompileTargetType.PRG;
            config.Assembler  = C64Studio.Types.AssemblerType.C64_STUDIO;
            Assert.IsTrue(parser.Parse(source, null, config));

            string result = parser.Renumber(10, 3);

            Assert.AreEqual("10IFA=1THEN10", result);
        }
Пример #4
0
        public void TestRenumberOverLines()
        {
            string source = @"10 goto 300
                          300 goto 10";

            C64Studio.Parser.BasicFileParser parser = new C64Studio.Parser.BasicFileParser();

            C64Studio.Parser.CompileConfig config = new C64Studio.Parser.CompileConfig();
            config.OutputFile = "test.prg";
            config.TargetType = C64Studio.Types.CompileTargetType.PRG;
            config.Assembler  = C64Studio.Types.AssemblerType.C64_STUDIO;
            Assert.IsTrue(parser.Parse(source, null, config));

            string result = parser.Renumber(10, 3);

            Assert.AreEqual(@"10GOTO13
13GOTO10", result);
        }
Пример #5
0
        public void TestRenumberOnGosub()
        {
            string source = @"10 onxgosub100,400,700
                          100printa
                          400 printb
                          700 printc";

            C64Studio.Parser.BasicFileParser parser = new C64Studio.Parser.BasicFileParser();

            C64Studio.Parser.CompileConfig config = new C64Studio.Parser.CompileConfig();
            config.OutputFile = "test.prg";
            config.TargetType = C64Studio.Types.CompileTargetType.PRG;
            config.Assembler  = C64Studio.Types.AssemblerType.C64_STUDIO;
            Assert.IsTrue(parser.Parse(source, null, config));

            string result = parser.Renumber(10, 3);

            Assert.AreEqual(@"10ONXGOSUB13,16,19
13PRINTA
16PRINTB
19PRINTC", result);
        }