Ejemplo n.º 1
0
        public GR.Memory.ByteBuffer Save()
        {
            GR.Memory.ByteBuffer bufferProject = new GR.Memory.ByteBuffer();

            bufferProject.Reserve(1000000);

            GR.IO.FileChunk chunkProject = new GR.IO.FileChunk(Types.FileChunk.PROJECT);

            // version 2 -> has adjusted debug start address (to get rid of 2049)
            chunkProject.AppendU32(2);
            chunkProject.AppendString(Settings.Name);
            chunkProject.AppendString(Settings.Filename);
            chunkProject.AppendU16(Settings.DebugPort);
            chunkProject.AppendU16(0);// obsolete Settings.DebugStartAddress
            chunkProject.AppendString(Settings.BuildTool);
            chunkProject.AppendString(Settings.RunTool);
            chunkProject.AppendString(Settings.MainDocument);
            chunkProject.AppendString(Settings.CurrentConfig.Name);
            if (Core.MainForm.ActiveElement != null)
            {
                chunkProject.AppendString(Core.MainForm.ActiveElement.Filename);
            }
            else
            {
                chunkProject.AppendString("");
            }
            uint flags = 0;

            chunkProject.AppendU32(flags);

            bufferProject.Append(chunkProject.ToBuffer());

            foreach (System.Windows.Forms.TreeNode node in Node.Nodes)
            {
                ProjectElement element = (ProjectElement)node.Tag;

                bufferProject.Append(ElementToBuffer(element));
            }

            foreach (ProjectConfig config in Settings.GetConfigurations())
            {
                bufferProject.Append(config.Save());
            }

            // only save watches once, for the active project
            foreach (var watch in Settings.WatchEntries)
            {
                bufferProject.Append(watch.Save());
            }

            return(bufferProject);
        }
Ejemplo n.º 2
0
        public bool         Save(string Filename)
        {
            GR.Memory.ByteBuffer bufferProject = new GR.Memory.ByteBuffer();

            GR.IO.FileChunk chunkProject = new GR.IO.FileChunk(Types.FileChunk.PROJECT);

            chunkProject.AppendU32(1);
            chunkProject.AppendString(Settings.Name);
            chunkProject.AppendString(Filename);
            chunkProject.AppendU16(Settings.DebugPort);
            chunkProject.AppendU16(Settings.DebugStartAddress);
            chunkProject.AppendString(Settings.BuildTool);
            chunkProject.AppendString(Settings.RunTool);
            chunkProject.AppendString(Settings.MainDocument);

            bufferProject.Append(chunkProject.ToBuffer());

            foreach (ProjectElement element in Elements)
            {
                GR.IO.FileChunk chunkElement = new GR.IO.FileChunk(Types.FileChunk.PROJECT_ELEMENT);

                chunkElement.AppendU32(1);
                chunkElement.AppendU32((uint)element.Type);
                chunkElement.AppendString(element.Name);
                chunkElement.AppendString(element.Filename);

                GR.IO.FileChunk chunkElementData = new GR.IO.FileChunk(Types.FileChunk.PROJECT_ELEMENT_DATA);

                element.Document.SaveToChunk(chunkElementData);

                chunkElement.Append(chunkElementData.ToBuffer());
                chunkElement.AppendString(element.TargetFilename);
                chunkElement.AppendU32((uint)element.TargetType);

                bufferProject.Append(chunkElement.ToBuffer());
            }

            try
            {
                System.IO.File.WriteAllBytes(Filename, bufferProject.Data());
            }
            catch (System.IO.IOException)
            {
                return(false);
            }
            m_Modified = false;
            return(true);
        }
Ejemplo n.º 3
0
        public GR.Memory.ByteBuffer Save()
        {
            GR.Memory.ByteBuffer bufferProject = new GR.Memory.ByteBuffer();

            GR.IO.FileChunk chunkProject = new GR.IO.FileChunk(Types.FileChunk.PROJECT);

            chunkProject.AppendU32(1);
            chunkProject.AppendString(Settings.Name);
            chunkProject.AppendString(Settings.Filename);
            chunkProject.AppendU16(Settings.DebugPort);
            chunkProject.AppendU16(2049);// obsolete Settings.DebugStartAddress
            chunkProject.AppendString(Settings.BuildTool);
            chunkProject.AppendString(Settings.RunTool);
            chunkProject.AppendString(Settings.MainDocument);
            chunkProject.AppendString(Settings.CurrentConfig.Name);
            if (Core.MainForm.ActiveElement != null)
            {
                chunkProject.AppendString(Core.MainForm.ActiveElement.Filename);
            }
            else
            {
                chunkProject.AppendString("");
            }

            bufferProject.Append(chunkProject.ToBuffer());

            foreach (System.Windows.Forms.TreeNode node in Node.Nodes)
            {
                ProjectElement element = (ProjectElement)node.Tag;

                bufferProject.Append(ElementToBuffer(element));
            }

            foreach (ProjectConfig config in Settings.Configs.Values)
            {
                bufferProject.Append(config.Save());
            }

            foreach (var watch in Core.MainForm.m_DebugWatch.m_WatchEntries)
            {
                bufferProject.Append(watch.Save());
            }

            return(bufferProject);
        }
Ejemplo n.º 4
0
        public GR.Memory.ByteBuffer SaveToBuffer()
        {
            GR.Memory.ByteBuffer projectFile = new GR.Memory.ByteBuffer();

            GR.IO.FileChunk chunkScreenInfo = new GR.IO.FileChunk(FileChunkConstants.CHARSET_SCREEN_INFO);
            // version
            chunkScreenInfo.AppendI32(0);
            // width
            chunkScreenInfo.AppendI32(ScreenWidth);
            // height
            chunkScreenInfo.AppendI32(ScreenHeight);
            chunkScreenInfo.AppendString("");
            chunkScreenInfo.AppendI32((int)Mode);
            chunkScreenInfo.AppendI32(ScreenOffsetX);
            chunkScreenInfo.AppendI32(ScreenOffsetY);
            chunkScreenInfo.AppendI32(CharOffset);

            projectFile.Append(chunkScreenInfo.ToBuffer());

            GR.IO.FileChunk chunkCharSet = new GR.IO.FileChunk(FileChunkConstants.CHARSET_DATA);
            chunkCharSet.Append(CharSet.SaveToBuffer());
            projectFile.Append(chunkCharSet.ToBuffer());

            GR.IO.FileChunk chunkScreenMultiColorData = new GR.IO.FileChunk(FileChunkConstants.MULTICOLOR_DATA);
            chunkScreenMultiColorData.AppendU8((byte)Mode);
            chunkScreenMultiColorData.AppendU8((byte)CharSet.Colors.BackgroundColor);
            chunkScreenMultiColorData.AppendU8((byte)CharSet.Colors.MultiColor1);
            chunkScreenMultiColorData.AppendU8((byte)CharSet.Colors.MultiColor2);
            projectFile.Append(chunkScreenMultiColorData.ToBuffer());

            GR.IO.FileChunk chunkScreenCharData = new GR.IO.FileChunk(FileChunkConstants.SCREEN_CHAR_DATA);
            if (Lookup.NumBytesOfSingleCharacter(Lookup.TextCharModeFromTextMode(Mode)) == 2)
            {
                for (int i = 0; i < Chars.Count; ++i)
                {
                    chunkScreenCharData.AppendU16((ushort)(Chars[i] & 0xffff));
                }
            }
            else
            {
                for (int i = 0; i < Chars.Count; ++i)
                {
                    chunkScreenCharData.AppendU8((byte)(Chars[i] & 0xffff));
                }
            }
            projectFile.Append(chunkScreenCharData.ToBuffer());

            GR.IO.FileChunk chunkScreenColorData = new GR.IO.FileChunk(FileChunkConstants.SCREEN_COLOR_DATA);
            if (Lookup.NumBytesOfSingleCharacter(Lookup.TextCharModeFromTextMode(Mode)) == 2)
            {
                for (int i = 0; i < Chars.Count; ++i)
                {
                    chunkScreenColorData.AppendU16((ushort)(Chars[i] >> 16));
                }
            }
            else
            {
                for (int i = 0; i < Chars.Count; ++i)
                {
                    chunkScreenColorData.AppendU8((byte)(Chars[i] >> 16));
                }
            }
            projectFile.Append(chunkScreenColorData.ToBuffer());

            return(projectFile);
        }