/// <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("|------------------------------------------------------------------------"); }