//using System; //using System.Collections.Generic; //using System.Linq; //using System.Text; //using Cosmos.Hardware; //using Cosmos.Kernel; //namespace MatthijsTest //{ // public class MyATADevice: BlockDevice // { // #region Inherited members // public override uint BlockSize // { // get // { // return 512; // } // } // public override uint BlockCount // { // get // { // return mSectorCount; // } // } // public override void ReadBlock(uint aBlock, byte[] aContents) // { // throw new NotImplementedException(); // } // public override unsafe void WriteBlock(uint aBlock, byte[] aContents) // { // AddressSpace xAddrSpace; // fixed (byte* xContents = &aContents[0]) // { // xAddrSpace = new ManagedMemorySpace(aContents); // Console.Write("Correct offset: "); // Interrupts.WriteNumber((uint)xContents, 32); // Console.WriteLine(""); // Console.Write("Guessed offset: "); // Interrupts.WriteNumber(xAddrSpace.Offset, 32); // Console.WriteLine(""); // if (xAddrSpace.Offset != ((uint)xContents)) // { // Console.WriteLine("Offset not correct"); // } // } // //var xAddrSpace = new MemoryAddressSpace(xAddr, 512); // //for (uint i = 0; i < 512; i++) // //{ // // xAddrSpace.Write8(i, aContents[i]); // //} // mController.WriteSector_LBA28(mIsMaster, aBlock, xAddrSpace); // } // public override string Name // { // get // { // return mName; // } // } // private string mName; // #endregion // #region Initialization // internal MyATADevice(MyATAController controller, string name, bool isMaster) // { // mName = name; // mController = controller; // mIsMaster = isMaster; // Initialize(); // } // private void Initialize() // { // var xMemSpace = new ManagedMemorySpace(512); // mController.RealReadBlock_PIO(xMemSpace); // SupportsLBA48 = (xMemSpace.Read16(83 * 2) & 1 << 10) != 0; // byte 10 of word 83 specifies if LBA48 is supported // SupportedUDMA = xMemSpace.Read8(88 * 2); // mSectorCount = xMemSpace.Read32(60 * 2); // word 60 & 61 contain the number of LBA28 sectors // SupportsLBA28 = mSectorCount != 0; // } // public byte SupportedUDMA // { // get; // private set; // } // public bool SupportsLBA28 // { // get; // private set; // } // public bool SupportsLBA48 // { // get; // private set; // } // private uint mSectorCount; // private readonly MyATAController mController; // private readonly bool mIsMaster; // #endregion // } //}