예제 #1
0
        public List <string> DisassembleTextFile(EDatabaseTable eDatabaseTable, string strDatabasePath, string strItemName)
        {
            PrepForDASM();

            // Load file to byte array
            List <string> lstrCardData = ReadCardFileToStringList(eDatabaseTable, "", strItemName);

            LoadTextFile(lstrCardData);
            m_bDumpComplete = false;

            // Disassemble end card
            List <string> strlDisassembleTextFile = new List <string> ();
            //strlDisassembleTextFile.Add ("Program Disassembly for: " + strItemName);
            //strlDisassembleTextFile.Add ("End Card Instructions");
            int iInsertPoint = strlDisassembleTextFile.Count;

            strlDisassembleTextFile.AddRange(DisassembleCodeEndCard(m_yaEndCard, m_iLowAddressEC, m_iHighAddressEC));
            //strlDisassembleTextFile.Insert (iInsertPoint, string.Format ("Program entry point: 0x{0:X4}", m_iEndCardLoadAddress));
            strlDisassembleTextFile.Add("");
            strlDisassembleTextFile.Add("");

            // Disassemble byte array
            strlDisassembleTextFile.Add("Program Body Disassembly");
            strlDisassembleTextFile.Add(string.Format("Program entry point: 0x{0:X4}", m_iEndCardLoadAddress));
            //if (m_iLowAddressMI < m_iEndCardLoadAddress)
            //{
            //    strlDisassembleTextFile.AddRange (BinaryToDump (m_ylMemoryImage, m_iLowAddressMI, m_iEndCardLoadAddress - 1));
            //}
            strlDisassembleTextFile.AddRange(DisassembleCodeFromText(m_ylMemoryImage.ToArray()));

            return(strlDisassembleTextFile);
        }
예제 #2
0
        public List <string> ReadScriptDataToStringList(EDatabaseTable eDatabaseTable, string strDatabasePath, string strScriptName)
        {
            List <string> lstrScriptLines = new List <string> ();

            if (strDatabasePath.Length == 0)
            {
                if (m_strDatabasePath.Length == 0)
                {
                    return(lstrScriptLines);
                }

                strDatabasePath = m_strDatabasePath;
            }

            System.Data.OleDb.OleDbConnection odbConnection;
            System.Data.OleDb.OleDbCommand    odbCommand = new System.Data.OleDb.OleDbCommand();
            string strTableName   = "";
            string strSelectName  = "";
            string strOrderByName = "";
            string strDataName    = "";

            if (eDatabaseTable == EDatabaseTable.TABLE_SavedScripts)
            {
                strTableName   = "SavedScripts";
                strSelectName  = "ScriptName";
                strOrderByName = "ScriptLineSequence";
                strDataName    = "ScriptLineText";
            }
            else if (eDatabaseTable == EDatabaseTable.TABLE_ScriptingMacros)
            {
                strTableName   = "ScriptingMacros";
                strSelectName  = "MacroName";
                strOrderByName = "MacroLineSequence";
                strDataName    = "MacroLineText";
            }
            else
            {
                return(lstrScriptLines);
            }

            string strSqlCommand = string.Format("SELECT {0}.[{3}] FROM {0} WHERE {1} = '{4}' Order by {2} ASC;",
                                                 strTableName, strSelectName, strOrderByName, strDataName, strScriptName);

            try
            {
                odbConnection = new System.Data.OleDb.OleDbConnection(string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='{0}';", strDatabasePath));

                OleDbDataAdapter ordAdapter = new OleDbDataAdapter(strSqlCommand, odbConnection);
                DataSet          dsScript   = new DataSet("ScripSet");

                DataTable  dtScript        = dsScript.Tables.Add("ScriptTable");
                DataColumn dciplScriptLine = dtScript.Columns.Add(strDataName, typeof(string));

                ordAdapter.Fill(dtScript);
                DataTableReader dtrScript = dtScript.CreateDataReader();
                if (dtrScript.HasRows)
                {
                    while (dtrScript.Read())
                    {
                        lstrScriptLines.Add(SqlInsertDecode(SafeGetString(dtrScript, 0)));
                    }
                }

                odbConnection.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return(lstrScriptLines);
            }

            return(lstrScriptLines);
        }
예제 #3
0
        public byte[] ReadDiskImageToBinary(EDatabaseTable eDatabaseTable, string strDatabasePath, string strFilename)
        {
            List <byte> lyDiskImage = new List <byte> ();

            if (strDatabasePath.Length > 0)
            {
                if (m_strDatabasePath.Length == 0)
                {
                    return(lyDiskImage.ToArray());
                }

                strDatabasePath = m_strDatabasePath;
            }

            string strTableName = "";

            if (eDatabaseTable == EDatabaseTable.TABLE_DiskCreatedImages)
            {
                strTableName = "DiskCreatedImages";
            }
            else if (eDatabaseTable == EDatabaseTable.TABLE_DiskOriginalImages)
            {
                strTableName = "DiskOriginalImages";
            }
            else
            {
                return(lyDiskImage.ToArray());
            }

            try
            {
                if (m_odbConnection.ConnectionString.Length == 0)
                {
                    m_odbConnection.ConnectionString = (string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='{0}';", strDatabasePath));
                }

                string strSqlCommand = string.Format("SELECT {0}.[DiskSectorPartOne], {0}.[DiskSectorPartTwo], {0}.[DiskSectorPartThree], {0}.[DiskSectorPartFour]" +
                                                     "FROM {0} WHERE DiskImageName = '{1}' ORDER BY DiskRecordSequence", strTableName, strFilename);

                OleDbDataAdapter ordAdapter = new OleDbDataAdapter(strSqlCommand, m_odbConnection);
                DataSet          ds         = new DataSet("DiskOriginalImagesSet");

                DataTable  dtIPL = ds.Tables.Add("DiskOriginalImagesTable");
                DataColumn dcdiDiskSectorPartOne   = dtIPL.Columns.Add("DiskSectorPartOne", typeof(string));
                DataColumn dcdiDiskSectorPartTwo   = dtIPL.Columns.Add("DiskSectorPartTwo", typeof(string));
                DataColumn dcdiDiskSectorPartThree = dtIPL.Columns.Add("DiskSectorPartThree", typeof(string));
                DataColumn dcdiDiskSectorPartFour  = dtIPL.Columns.Add("DiskSectorPartFour", typeof(string));

                ordAdapter.Fill(dtIPL);
                DataTableReader dtr = dtIPL.CreateDataReader();
                if (dtr.HasRows)
                {
                    while (dtr.Read())
                    {
                        CompressHexToByte(SafeGetString(dtr, 0), ref lyDiskImage);
                        CompressHexToByte(SafeGetString(dtr, 1), ref lyDiskImage);
                        CompressHexToByte(SafeGetString(dtr, 2), ref lyDiskImage);
                        CompressHexToByte(SafeGetString(dtr, 3), ref lyDiskImage);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return(lyDiskImage.ToArray());
            }

            return(lyDiskImage.ToArray());
        }
예제 #4
0
        public List <string> ReadCardFileToStringList(EDatabaseTable eDatabaseTable, string strDatabasePath, string strFilename)
        {
            List <string> lstrCardLines = new List <string> ();

            if (strDatabasePath.Length == 0)
            {
                if (m_strDatabasePath.Length == 0)
                {
                    return(lstrCardLines);
                }

                strDatabasePath = m_strDatabasePath;
            }

            string strTableName   = "";
            string strSelectName  = "";
            string strOrderByName = "";
            string strDataName    = "";

            if (eDatabaseTable == EDatabaseTable.TABLE_CardData)
            {
                strTableName   = "CardData";
                strSelectName  = "DataFileName";
                strOrderByName = "CardSequence";
                strDataName    = "CardImage";
            }
            else if (eDatabaseTable == EDatabaseTable.TABLE_CardObjectIPL)
            {
                strTableName   = "CardObjectIPL";
                strSelectName  = "ProgramName";
                strOrderByName = "CardSequence";
                strDataName    = "CardImage";
            }
            else if (eDatabaseTable == EDatabaseTable.TABLE_CardObjectText)
            {
                strTableName   = "CardObjectText";
                strSelectName  = "ProgramName";
                strOrderByName = "CardSequence";
                strDataName    = "CardImage";
            }
            else if (eDatabaseTable == EDatabaseTable.TABLE_CardRPGiiSource)
            {
                strTableName   = "CardRPGiiSource";
                strSelectName  = "ProgramName";
                strOrderByName = "CardSequence";
                strDataName    = "CardImage";
            }
            else
            {
                return(lstrCardLines);
            }

            string strSqlCommand = string.Format("SELECT {0}.[{3}] FROM {0} WHERE {1} = '{4}' Order by {2} ASC;",
                                                 strTableName, strSelectName, strOrderByName, strDataName, strFilename);

            try
            {
                if (m_odbConnection.ConnectionString.Length == 0)
                {
                    m_odbConnection.ConnectionString = (string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='{0}';", strDatabasePath));
                }

                OleDbDataAdapter ordAdapter = new OleDbDataAdapter(strSqlCommand, m_odbConnection);
                DataSet          ds         = new DataSet("CardObjectIPLSet");

                DataTable  dtIPL          = ds.Tables.Add("CardObjectIPLTable");
                DataColumn dciplCardImage = dtIPL.Columns.Add("CardImage", typeof(string));

                ordAdapter.Fill(dtIPL);
                DataTableReader dtr = dtIPL.CreateDataReader();
                if (dtr.HasRows)
                {
                    while (dtr.Read())
                    {
                        string strNewString = SafeGetString(dtr, 0);
                        if (strNewString.Length < 96)
                        {
                            strNewString += new string (' ', 96 - strNewString.Length);
                        }
                        lstrCardLines.Add(SqlInsertDecode(strNewString));
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return(lstrCardLines);
            }

            return(lstrCardLines);
        }