Exemplo n.º 1
0
    /// <summary>
    /// Display the information about the current memory back provided.
    /// </summary>
    /// <param name="bank"> Memory Bank object. </param>
    public static void displayBankInformation(MemoryBank bank)
    {
        Debug.WriteLine("|------------------------------------------------------------------------");
        Debug.WriteLine("| Bank: (" + bank.BankDescription + ")");
        Debug.Write("| Implements : MemoryBank");

        if (bank is PagedMemoryBank)
        {
            Debug.Write(", PagedMemoryBank");
        }

        Debug.WriteLine("");
        Debug.WriteLine("| Size " + bank.Size + " starting at physical address " + bank.StartPhysicalAddress);
        Debug.Write("| Features:");

        if (bank.ReadWrite)
        {
            Debug.Write(" Read/Write");
        }

        if (bank.WriteOnce)
        {
            Debug.Write(" Write-once");
        }

        if (bank.ReadOnly)
        {
            Debug.Write(" Read-only");
        }

        if (bank.GeneralPurposeMemory)
        {
            Debug.Write(" general-purpose");
        }
        else
        {
            Debug.Write(" not-general-purpose");
        }

        if (bank.NonVolatile)
        {
            Debug.Write(" non-volatile");
        }
        else
        {
            Debug.Write(" volatile");
        }

        if (bank.needsProgramPulse())
        {
            Debug.Write(" needs-program-pulse");
        }

        if (bank.needsPowerDelivery())
        {
            Debug.Write(" needs-power-delivery");
        }

        // check if has paged services
        if (bank is PagedMemoryBank)
        {
            // caste to page bank
            PagedMemoryBank pbank = (PagedMemoryBank)bank;

            // page info
            Debug.WriteLine("");
            Debug.Write("| Pages: " + pbank.NumberPages + " pages of length ");
            Debug.Write(pbank.PageLength + " bytes ");

            if (bank.GeneralPurposeMemory)
            {
                Debug.Write("giving " + pbank.MaxPacketDataLength + " bytes Packet data payload");
            }

            if (pbank.hasPageAutoCRC())
            {
                Debug.WriteLine("");
                Debug.Write("| Page Features: page-device-CRC");
            }

            if (pbank.hasExtraInfo())
            {
                Debug.WriteLine("");
                Debug.WriteLine("| Extra information for each page:  " + pbank.ExtraInfoDescription + ", length " + pbank.ExtraInfoLength);
            }
            else
            {
                Debug.WriteLine("");
            }
        }
        else
        {
            Debug.WriteLine("");
        }

        Debug.WriteLine("|------------------------------------------------------------------------");
    }