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