public bool HasBASICJumpAddress(int DataStartAddress, out int SysAddress) { SysAddress = 0; if ((DataStartAddress == 0x0801) || (DataStartAddress == 0x0800)) { // validate basic header, look for jump address // 00 08 00 0C 08 0A 00 9E 32 30 36 34 00 00 00 int dataPos = 0x0801 - DataStartAddress; ushort pointerToNextLine = m_SourceData.UInt16At(dataPos); ushort lineNumber = m_SourceData.UInt16At(dataPos + 2); byte sysInstruction = m_SourceData.ByteAt(dataPos + 4); if (sysInstruction != 0x9e) { // not a SYS command return(false); } string sysAddress = ""; dataPos += 5; while ((dataPos < m_SourceData.Length) && (m_SourceData.ByteAt(dataPos) != 0)) { sysAddress += m_SourceData.ByteAt(dataPos).ToString("X2"); ++dataPos; } GR.Memory.ByteBuffer sysAddrData = new GR.Memory.ByteBuffer(); if (!sysAddrData.AppendHex(sysAddress)) { return(false); } SysAddress = GR.Convert.ToI32(sysAddrData.ToAsciiString()); return(true); } return(false); }