Exemple #1
0
        /// <summary>
        /// Setups this hardware device driver
        /// </summary>
        /// <param name="hardwareResources"></param>
        /// <returns></returns>
        public override bool Setup(HardwareResources hardwareResources)
        {
            this.HardwareResources = hardwareResources;
            base.Name = "GenericVGA";

            byte portBar = (byte)(base.HardwareResources.IOPointRegionCount - 1);

            miscellaneousOutputRead = base.HardwareResources.GetIOPortReadWrite(portBar, 0x1C);
            crtControllerIndex      = base.HardwareResources.GetIOPortReadWrite(portBar, 0x04);
            crtControllerData       = base.HardwareResources.GetIOPortReadWrite(portBar, 0x05);
            crtControllerIndexColor = base.HardwareResources.GetIOPortReadWrite(portBar, 0x24);
            crtControllerDataColor  = base.HardwareResources.GetIOPortReadWrite(portBar, 0x25);
            dacPaletteMask          = base.HardwareResources.GetIOPortReadWrite(portBar, 0x16);
            dacIndexRead            = base.HardwareResources.GetIOPortReadWrite(portBar, 0x17);
            dacIndexWrite           = base.HardwareResources.GetIOPortReadWrite(portBar, 0x18);
            dacData                   = base.HardwareResources.GetIOPortReadWrite(portBar, 0x19);
            inputStatus1              = base.HardwareResources.GetIOPortReadWrite(portBar, 0x12);
            miscellaneousOutputWrite  = base.HardwareResources.GetIOPortWrite(portBar, 0x12);
            sequencerAddress          = base.HardwareResources.GetIOPortReadWrite(portBar, 0x14);
            sequencerData             = base.HardwareResources.GetIOPortReadWrite(portBar, 0x15);
            graphicsControllerAddress = base.HardwareResources.GetIOPortReadWrite(portBar, 0x1E);
            graphicsControllerData    = base.HardwareResources.GetIOPortReadWrite(portBar, 0x1F);
            inputStatus1ReadB         = base.HardwareResources.GetIOPortReadWrite(portBar, 0x2A);
            attributeAddress          = base.HardwareResources.GetIOPortReadWrite(portBar, 0x10);
            attributeData             = base.HardwareResources.GetIOPortReadWrite(portBar, 0x11);

            memory = base.HardwareResources.GetMemory((byte)(base.HardwareResources.MemoryRegionCount - 1));

            return(true);
        }
Exemple #2
0
        protected override void Initialize()
        {
            Device.Name = "AMDPCNet_0x" + Device.Resources.GetIOPortRegion(0).BaseIOPort.ToString("X");

            ioProm1 = Device.Resources.GetIOPortReadWrite(0, 0x0);
            ioProm4 = Device.Resources.GetIOPortReadWrite(0, 0x4);
            rdp     = Device.Resources.GetIOPortReadWrite(0, 0x10);
            rap     = Device.Resources.GetIOPortReadWrite(0, 0x14);
            bdp     = Device.Resources.GetIOPortReadWrite(0, 0x1C);

            initBlock    = Device.Resources.GetMemory(0);
            txDescriptor = Device.Resources.GetMemory(1);
            rxDescriptor = Device.Resources.GetMemory(2);
            buffers      = Device.Resources.GetMemory(3);

            bufferSize = 2048;
            uint len = (ushort)(~bufferSize);

            len = ((len + 1) & 0x0FFF) | 0x8000F000;

            physicalBufferAddress = HAL.GetPhysicalAddress(buffers);

            for (uint index = 0; index < 16; index++)
            {
                uint offset = index * 4;
                rxDescriptor.Write32((offset + 1) * 4, len);
                rxDescriptor.Write32((offset + 2) * 4, physicalBufferAddress + (bufferSize * index));
                txDescriptor.Write32((offset + 2) * 4, physicalBufferAddress + (bufferSize * (index + 16)));
            }

            nextTXDesc = 0;
        }
Exemple #3
0
        public static bool InitVBE(BaseHardwareAbstraction hal)
        {
            if (!Multiboot.IsMultibootEnabled)
            {
                return(false);
            }

            if (!Multiboot.VBEPresent)
            {
                return(false);
            }

            VBEMode vbeInfo = Multiboot.VBEModeInfoStructure;

            uint memorySize = (uint)(vbeInfo.ScreenWidth * vbeInfo.ScreenHeight * (vbeInfo.BitsPerPixel / 8));

            _lfb = hal.RequestPhysicalMemory(vbeInfo.MemoryPhysicalLocation, memorySize);

            switch (vbeInfo.BitsPerPixel)
            {
            case 8: Framebuffer = new FrameBuffer8bpp(_lfb, vbeInfo.ScreenWidth, vbeInfo.ScreenHeight, 0, vbeInfo.Pitch); break;

            case 16: Framebuffer = new FrameBuffer16bpp(_lfb, vbeInfo.ScreenWidth, vbeInfo.ScreenHeight, 0, vbeInfo.Pitch); break;

            case 24: Framebuffer = new FrameBuffer24bpp(_lfb, vbeInfo.ScreenWidth, vbeInfo.ScreenHeight, 0, vbeInfo.Pitch); break;

            case 32: Framebuffer = new FrameBuffer32bpp(_lfb, vbeInfo.ScreenWidth, vbeInfo.ScreenHeight, 0, vbeInfo.Pitch); break;

            default:
                return(false);
            }

            return(true);
        }
Exemple #4
0
        /// <summary>
        /// Setups this hardware device driver
        /// </summary>
        /// <param name="hardwareResources"></param>
        /// <returns></returns>
        public override bool Setup(HardwareResources hardwareResources)
        {
            this.HardwareResources = hardwareResources;
            base.Name = "AMDPCNet_0x" + hardwareResources.GetIOPortRegion(0).BaseIOPort.ToString("X");

            ioProm1 = hardwareResources.GetIOPortReadWrite(0, 0x0);
            ioProm4 = hardwareResources.GetIOPortReadWrite(0, 0x4);
            rdp     = hardwareResources.GetIOPortReadWrite(0, 0x10);
            rap     = hardwareResources.GetIOPortReadWrite(0, 0x14);
            bdp     = hardwareResources.GetIOPortReadWrite(0, 0x1C);

            initBlock    = hardwareResources.GetMemory(0);
            txDescriptor = hardwareResources.GetMemory(1);
            rxDescriptor = hardwareResources.GetMemory(2);
            buffers      = hardwareResources.GetMemory(3);

            bufferSize = 2048;
            uint len = (ushort)(~bufferSize);

            len = ((len + 1) & 0x0FFF) | 0x8000F000;

            physicalBufferAddress = HAL.GetPhysicalAddress(buffers);

            for (uint index = 0; index < 16; index++)
            {
                uint offset = index * 4;
                rxDescriptor.Write32((offset + 1) * 4, len);
                rxDescriptor.Write32((offset + 2) * 4, physicalBufferAddress + (bufferSize * index));
                txDescriptor.Write32((offset + 2) * 4, physicalBufferAddress + (bufferSize * (index + 16)));
            }

            nextTXDesc = 0;

            return(true);
        }
Exemple #5
0
        protected override void Initialize()
        {
            Device.Name = "GenericVGA";

            byte portBar = (byte)(Device.Resources.IOPointRegionCount - 1);

            miscellaneousOutputRead = Device.Resources.GetIOPortReadWrite(portBar, 0x1C);
            crtControllerIndex      = Device.Resources.GetIOPortReadWrite(portBar, 0x04);
            crtControllerData       = Device.Resources.GetIOPortReadWrite(portBar, 0x05);
            crtControllerIndexColor = Device.Resources.GetIOPortReadWrite(portBar, 0x24);
            crtControllerDataColor  = Device.Resources.GetIOPortReadWrite(portBar, 0x25);
            dacPaletteMask          = Device.Resources.GetIOPortReadWrite(portBar, 0x16);
            dacIndexRead            = Device.Resources.GetIOPortReadWrite(portBar, 0x17);
            dacIndexWrite           = Device.Resources.GetIOPortReadWrite(portBar, 0x18);
            dacData                   = Device.Resources.GetIOPortReadWrite(portBar, 0x19);
            inputStatus1              = Device.Resources.GetIOPortReadWrite(portBar, 0x12);
            miscellaneousOutputWrite  = Device.Resources.GetIOPortWrite(portBar, 0x12);
            sequencerAddress          = Device.Resources.GetIOPortReadWrite(portBar, 0x14);
            sequencerData             = Device.Resources.GetIOPortReadWrite(portBar, 0x15);
            graphicsControllerAddress = Device.Resources.GetIOPortReadWrite(portBar, 0x1E);
            graphicsControllerData    = Device.Resources.GetIOPortReadWrite(portBar, 0x1F);
            inputStatus1ReadB         = Device.Resources.GetIOPortReadWrite(portBar, 0x2A);
            attributeAddress          = Device.Resources.GetIOPortReadWrite(portBar, 0x10);
            attributeData             = Device.Resources.GetIOPortReadWrite(portBar, 0x11);

            memory = Device.Resources.GetMemory((byte)(Device.Resources.MemoryRegionCount - 1));
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="FrameBuffer16bpp"/> class.
 /// </summary>
 /// <param name="memory">The memory.</param>
 /// <param name="width">The width.</param>
 /// <param name="height">The height.</param>
 /// <param name="offset">The offset.</param>
 /// <param name="depth">The depth.</param>
 public FrameBuffer16bpp(BaseMemory memory, uint width, uint height, uint offset, uint depth)
 {
     this.memory = memory;
     this.width  = width;
     this.height = height;
     this.offset = offset;
     this.depth  = depth;
 }
        /// <summary>
        /// Setups this hardware device driver
        /// </summary>
        /// <returns></returns>
        public override bool Setup(HardwareResources hardwareResources)
        {
            this.HardwareResources = hardwareResources;
            base.Name = "VMWARE_SVGA_0x" + hardwareResources.GetIOPortRegion(0).BaseIOPort.ToString("X");

            indexPort = hardwareResources.GetIOPortReadWrite(0, 0);
            valuePort = hardwareResources.GetIOPortReadWrite(0, 1);
            HAL.DebugWrite("**G**");
            memory = base.HardwareResources.GetMemory(0);
            HAL.DebugWrite("**I**");
            fifo = base.HardwareResources.GetMemory(1);
            HAL.DebugWrite("**J**");
            return(true);
        }
Exemple #8
0
        public override void Start()
        {
            if (Device.Status != DeviceStatus.Available)
            {
                return;
            }

            vgaEnableController.Write8((byte)(vgaEnableController.Read8() | 0x01));

            // Enable colors
            miscOutputWriter.Write8((byte)(miscOutputReader.Read8() | 0x01));

            // Enable MMIO
            crtcControllerIndex.Write8(0x53);
            crtcControllerData.Write8((byte)(crtcControllerData.Read8() | 0x8));

            // Unlock system registers
            WriteCrtcRegister(0x38, 0x48);
            WriteCrtcRegister(0x39, 0xa5);

            WriteCrtcRegister(0x40, 0x01, 0x01);
            WriteCrtcRegister(0x35, 0x00, 0x30);
            WriteCrtcRegister(0x33, 0x20, 0x72);

            WriteCrtcRegister(0x86, 0x80);
            WriteCrtcRegister(0x90, 0x00);

            // Detect number of MB of installed RAM
            byte[] ramSizes  = new byte[] { 4, 0, 3, 8, 2, 6, 1, 0 };
            int    ramSizeMB = ramSizes[(ReadCrtcRegister(0x36) >> 5) & 0x7];

            // Setup video memory
            memory = Device.Resources.GetMemory((byte)(ramSizeMB * 1024 * 1024));

            // Detect current mclk
            WriteSequenceRegister(0x08, 0x06);
            byte m  = (byte)(ReadSequenceRegister(0x11) & 0x7f);
            byte n  = ReadSequenceRegister(0x10);
            byte n1 = (byte)(n & 0x1f);
            byte n2 = (byte)((n >> 5) & 0x03);

            Device.Status = DeviceStatus.Online;
        }
Exemple #9
0
        protected override void Initialize()
        {
            Device.Name = "VGAText";

            miscellaneousOutput     = Device.Resources.GetIOPortReadWrite(0, 0x1C);
            crtControllerIndex      = Device.Resources.GetIOPortReadWrite(0, 0x04);
            crtControllerData       = Device.Resources.GetIOPortReadWrite(0, 0x05);
            crtControllerIndexColor = Device.Resources.GetIOPortReadWrite(0, 0x24);
            crtControllerDataColor  = Device.Resources.GetIOPortReadWrite(0, 0x25);

            miscellaneousOutputWrite  = Device.Resources.GetIOPortWrite(0, 0x12);
            sequencerAddress          = Device.Resources.GetIOPortReadWrite(0, 0x14);
            sequencerData             = Device.Resources.GetIOPortReadWrite(0, 0x15);
            graphicsControllerAddress = Device.Resources.GetIOPortReadWrite(0, 0x1E);
            graphicsControllerData    = Device.Resources.GetIOPortReadWrite(0, 0x1F);
            inputStatus1ReadB         = Device.Resources.GetIOPortReadWrite(0, 0x2A);
            attributeAddress          = Device.Resources.GetIOPortReadWrite(0, 0x10);
            attributeData             = Device.Resources.GetIOPortReadWrite(0, 0x11);

            memory = Device.Resources.GetMemory(0);
        }
Exemple #10
0
        private static readonly string MemoryFileName = "Airi.memory"; // File to store cached memory

        // Do initialization and load from previous memory if needed
        public TheSystem(bool bRestore = false)
        {
            // Initialize Memory
            if (bRestore == true)
            {
                // Check and load memory file
                string memoryFileLocation = AppDomain.CurrentDomain.BaseDirectory + MemoryFileName;
                if (File.Exists(memoryFileLocation))
                {
                    // Generate memory from file
                    AiriMemory = new BaseMemory(memoryFileLocation);
                }
                else
                {
                    // Otherwise raise an exception
                    throw new MemoryFileNotExistException("Memory File Not Found.");
                }
            }
            else
            {
                // Other wise we don't need to do any special initialization
                AiriMemory = new BaseMemory();
            }
        }
Exemple #11
0
 /// <summary>
 /// Gets the physical address.
 /// </summary>
 /// <param name="memory">The memory.</param>
 /// <returns></returns>
 public static uint GetPhysicalAddress(BaseMemory memory)
 {
     return(hardwareAbstraction.GetPhysicalAddress(memory));
 }
 /// <summary>
 /// Gets the physical address.
 /// </summary>
 /// <param name="memory">The memory.</param>
 /// <returns></returns>
 public abstract uint GetPhysicalAddress(BaseMemory memory);
Exemple #13
0
 /// <summary>
 /// Gets the physical address.
 /// </summary>
 /// <param name="memory">The memory.</param>
 /// <returns></returns>
 public override uint GetPhysicalAddress(BaseMemory memory)
 {
     return(PageTable.GetPhysicalAddressFromVirtual(memory.Address));
 }