/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "GenericVGA"; byte portBar = (byte)(base.hardwareResources.IOPointRegionCount - 1); miscellaneousOutputRead = base.hardwareResources.GetIOPort(portBar, 0x1C); crtControllerIndex = base.hardwareResources.GetIOPort(portBar, 0x04); crtControllerData = base.hardwareResources.GetIOPort(portBar, 0x05); crtControllerIndexColor = base.hardwareResources.GetIOPort(portBar, 0x24); crtControllerDataColor = base.hardwareResources.GetIOPort(portBar, 0x25); dacPaletteMask = base.hardwareResources.GetIOPort(portBar, 0x16); dacIndexRead = base.hardwareResources.GetIOPort(portBar, 0x17); dacIndexWrite = base.hardwareResources.GetIOPort(portBar, 0x18); dacData = base.hardwareResources.GetIOPort(portBar, 0x19); inputStatus1 = base.hardwareResources.GetIOPort(portBar, 0x12); miscellaneousOutputWrite = base.hardwareResources.GetIOPort(portBar, 0x12); sequencerAddress = base.hardwareResources.GetIOPort(portBar, 0x14); sequencerData = base.hardwareResources.GetIOPort(portBar, 0x15); graphicsControllerAddress = base.hardwareResources.GetIOPort(portBar, 0x1E); graphicsControllerData = base.hardwareResources.GetIOPort(portBar, 0x1F); inputStatus1ReadB = base.hardwareResources.GetIOPort(portBar, 0x2A); attributeAddress = base.hardwareResources.GetIOPort(portBar, 0x10); attributeData = base.hardwareResources.GetIOPort(portBar, 0x11); memory = base.hardwareResources.GetMemory((byte)(base.hardwareResources.MemoryRegionCount - 1)); return(true); }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "COM_0x" + base.hardwareResources.GetIOPort(0, 0).Address.ToString("X"); rbrBase = base.hardwareResources.GetIOPort(0, 0); // Receive Buffer Register (read only) thrBase = base.hardwareResources.GetIOPort(0, 0); // Transmitter Holding Register (write only) ierBase = base.hardwareResources.GetIOPort(0, 1); // Interrupt Enable Register dllBase = base.hardwareResources.GetIOPort(0, 0); // Divisor Latch (LSB and MSB) dlmBase = base.hardwareResources.GetIOPort(0, 1); iirBase = base.hardwareResources.GetIOPort(0, 2); // Interrupt Identification Register (read only) fcrBase = base.hardwareResources.GetIOPort(0, 2); // FIFO Control Register (write only, 16550+ only) lcrBase = base.hardwareResources.GetIOPort(0, 3); // Line Control Register mcrBase = base.hardwareResources.GetIOPort(0, 4); // Modem Control Register lsrBase = base.hardwareResources.GetIOPort(0, 5); // Line Status Register msrBase = base.hardwareResources.GetIOPort(0, 6); // Modem Status Register scrBase = base.hardwareResources.GetIOPort(0, 7); // Scratch Register (16450+ and some 8250s, special use with some boards) fifoBuffer = new byte[fifoSize]; fifoStart = 0; fifoEnd = 0; base.deviceStatus = DeviceStatus.Online; return(true); }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "AMDPCNet_0x" + hardwareResources.GetIOPortRegion(0).BaseIOPort.ToString("X"); ioProm1 = hardwareResources.GetIOPort(0, 0x0); ioProm4 = hardwareResources.GetIOPort(0, 0x4); rdp = hardwareResources.GetIOPort(0, 0x10); rap = hardwareResources.GetIOPort(0, 0x14); bdp = hardwareResources.GetIOPort(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); }
/// <summary> /// Starts this hardware device. /// </summary> /// <returns></returns> public override DeviceDriverStartStatus Start() { WriteSettings(VGAText80x25); colorMode = ((miscellaneousOutput.Read8() & 1) == 1); if (colorMode) { offset = 0x8000; bytePerChar = 2; activeControllerIndex = crtControllerIndexColor; activeControllerData = crtControllerDataColor; } else { offset = 0x0; bytePerChar = 1; activeControllerIndex = crtControllerIndex; activeControllerData = crtControllerData; } width = GetValue(CRTCommands.HorizontalDisplayEnableEnd); height = GetValue(CRTCommands.VerticalDisplayEnableEnd); width++; height = 25; base.deviceStatus = DeviceStatus.Online; return(DeviceDriverStartStatus.Started); }
/// <summary> /// Setups this hardware device driver /// </summary> /// <param name="hardwareResources"></param> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "IDE_0x" + base.hardwareResources.GetIOPort(0, 0).Address.ToString("X"); DataPort = base.hardwareResources.GetIOPort(0, 0); ErrorPort = base.hardwareResources.GetIOPort(0, 1); FeaturePort = base.hardwareResources.GetIOPort(0, 1); SectorCountPort = base.hardwareResources.GetIOPort(0, 2); LBALowPort = base.hardwareResources.GetIOPort(0, 3); LBAMidPort = base.hardwareResources.GetIOPort(0, 4); LBAHighPort = base.hardwareResources.GetIOPort(0, 5); DeviceHeadPort = base.hardwareResources.GetIOPort(0, 6); CommandPort = base.hardwareResources.GetIOPort(0, 7); StatusPort = base.hardwareResources.GetIOPort(0, 7); for (int drive = 0; drive < DrivesPerConroller; drive++) { driveInfo[drive].Present = false; driveInfo[drive].MaxLBA = 0; } base.deviceStatus = DeviceStatus.Online; return(true); }
public FloppyDiskDriver(ushort ioBase) { base.name = "FDC_0x" + ioBase.ToString("X"); base.parent = null; // no parent base.deviceStatus = DeviceStatus.Initializing; this.ioBase = ioBase; floppyDrives = new FloppyDriveInfo[DrivesPerController]; floppyMedia = new FloppyMediaInfo[DrivesPerController]; trackCache = new TrackCache[DrivesPerController]; lastSeek = new LastSeek[DrivesPerController]; for (int drive = 0; drive < DrivesPerController; drive++) { trackCache[drive].buffer = new byte[FDC.MaxBytesPerTrack]; } ControllerCommands = base.CreateIOPort(ioBase); StatusPort = base.CreateIOPort(ioBase, 2); DataPort = base.CreateIOPort(ioBase, 3); ConfigPort = base.CreateIOPort(ioBase, 5); CMOSComand = base.CreateIOPort(0x70); CMOSResponse = base.CreateIOPort(0x71); floppyDMA = base.CreateDMAChannel(2); floppyIRQ = base.CreateIRQHandler(6); this.Initialize(); }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(HardwareResources hardwareResources) { this.HardwareResources = hardwareResources; base.Name = "CMOS"; commandPort = base.HardwareResources.GetIOPort(0, 0); dataPort = base.HardwareResources.GetIOPort(0, 4); return(true); }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(HardwareResources hardwareResources) { this.HardwareResources = hardwareResources; base.Name = "PIT_0x" + base.HardwareResources.GetIOPort(0, 0).Address.ToString("X"); modeControlPort = base.HardwareResources.GetIOPort(0, 3); counter0Divisor = base.HardwareResources.GetIOPort(0, 0); return(true); }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(HardwareResources hardwareResources) { this.HardwareResources = hardwareResources; base.Name = "PCI_0x" + base.HardwareResources.GetIOPort(0, 0).Address.ToString("X"); configAddress = base.HardwareResources.GetIOPort(0, 0); configData = base.HardwareResources.GetIOPort(0, 4); return(true); }
public PCIController() { base.name = "PCI_0x" + PCIConfigAddress.ToString("X"); base.parent = null; // no parent base.deviceStatus = DeviceStatus.Initializing; ConfigAddress = base.CreateIOPort(PCIConfigAddress); ConfigData = base.CreateIOPort(PCIConfigData); this.Initialize(); }
public PCIController () { base.name = "PCI_0x" + PCIConfigAddress.ToString ("X"); base.parent = null; // no parent base.deviceStatus = DeviceStatus.Initializing; ConfigAddress = base.CreateIOPort (PCIConfigAddress); ConfigData = base.CreateIOPort (PCIConfigData); this.Initialize (); }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "VMWARE_SVGA_0x" + hardwareResources.GetIOPortRegion(0).BaseIOPort.ToString("X"); indexPort = hardwareResources.GetIOPort(0, 0); valuePort = hardwareResources.GetIOPort(0, 1); memory = base.hardwareResources.GetMemory(0); fifo = base.hardwareResources.GetMemory(1); return(true); }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "TEST_" + hardwareResources.GetIOPortRegion(0).BaseIOPort.ToString("X"); TestPort = hardwareResources.GetIOPort(0, 0); Command = new CommandRegister(TestPort, 8); Command.Enabled = true; return true; }
/// <summary> /// Setups this hardware device driver /// </summary> /// <param name="hardwareResources"></param> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "PIC_0x" + base.hardwareResources.GetIOPort(0, 0).Address.ToString("X"); masterCommandPort = base.hardwareResources.GetIOPort(0, 0); masterDataPort = base.hardwareResources.GetIOPort(0, 1); slaveCommandPort = base.hardwareResources.GetIOPort(1, 0); slaveDataPort = base.hardwareResources.GetIOPort(1, 1); return(true); }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "TEST_" + hardwareResources.GetIOPortRegion(0).BaseIOPort.ToString("X"); TestPort = hardwareResources.GetIOPort(0, 0); Command = new CommandRegister(TestPort, 8); Command.Enabled = true; return(true); }
/// <summary> /// Setups the standard keyboard driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "StandardKeyboard"; commandPort = base.hardwareResources.GetIOPort(0, 0); dataPort = base.hardwareResources.GetIOPort(1, 0); this.fifoBuffer = new byte[fifoSize]; this.fifoStart = 0; this.fifoEnd = 0; return(true); }
/// <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.GetIOPort(0, 0); valuePort = hardwareResources.GetIOPort(0, 1); HAL.DebugWrite("**G**"); memory = base.HardwareResources.GetMemory(0); HAL.DebugWrite("**I**"); fifo = base.HardwareResources.GetMemory(1); HAL.DebugWrite("**J**"); return(true); }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "FDC_0x" + base.hardwareResources.GetIOPort(0, 0).Address.ToString("X"); base.parent = null; // no parent commandPort = base.hardwareResources.GetIOPort(0, 2); statusPort = base.hardwareResources.GetIOPort(0, 4); dataPort = base.hardwareResources.GetIOPort(0, 5); configPort = base.hardwareResources.GetIOPort(0, 7); // floppyDMA = base.CreateDMAChannel(2); // floppyIRQ = base.CreateIRQHandler(6); return(true); }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { // Store reference to hardware resources this.hardwareResources = hardwareResources; // Set the driver's name base.name = "S3Trio64V2"; // Store portmanager byte portBar = (byte)(base.hardwareResources.IOPointRegionCount - 1); vgaEnableController = base.hardwareResources.GetIOPort(portBar, Register.VgaEnable); miscOutputReader = base.hardwareResources.GetIOPort(portBar, Register.MiscOutRead); miscOutputWriter = base.hardwareResources.GetIOPort(portBar, Register.MiscOutWrite); crtcControllerIndex = base.hardwareResources.GetIOPort(portBar, Register.CrtcIndex); crtcControllerData = base.hardwareResources.GetIOPort(portBar, Register.CrtcData); seqControllerIndex = base.hardwareResources.GetIOPort(portBar, Register.SequenceIndex); seqControllerData = base.hardwareResources.GetIOPort(portBar, Register.SequenceData); // Everything went fine return(true); }
public SerialDevice(ushort ioBase, byte irq) { base.name = "COM_0x" + ((uint)ioBase).ToString("X"); base.parent = null; // no parent base.deviceStatus = DeviceStatus.Initializing; this.ioBase = ioBase; this.fifoBuffer = new byte[FIFOSize]; this.fifoStart = 0; this.fifoEnd = 0; // Receive Buffer Register (read only) RBRBase = base.CreateIOPort(ioBase); // Transmitter Holding Register (write only) THRBase = base.CreateIOPort(ioBase); // Interrupt Enable Register IERBase = base.CreateIOPort(ioBase, 1); // Divisor Latch (LSB and MSB) DLLBase = base.CreateIOPort(ioBase); DLMBase = base.CreateIOPort(ioBase, 1); // Interrupt Identification Register (read only) IIRBase = base.CreateIOPort(ioBase, 2); // FIFO Control Register (write only, 16550+ only) FCRBase = base.CreateIOPort(ioBase, 2); // Line Control Register LCRBase = base.CreateIOPort(ioBase, 3); // Modem Control Register MCRBase = base.CreateIOPort(ioBase, 4); // Line Status Register LSRBase = base.CreateIOPort(ioBase, 5); // Modem Status Register MSRBase = base.CreateIOPort(ioBase, 6); // Scratch Register (16450+ and some 8250s, special use with some boards) SCRBase = base.CreateIOPort(ioBase, 7); serialIRQ = base.CreateIRQHandler(irq); this.Initialize(); }
public IDEDiskDriver(ushort ioBase) { base.name = "IDE_0x" + ioBase.ToString("X"); base.parent = null; // no parent base.deviceStatus = DeviceStatus.Initializing; this.ioBase = ioBase; DataPort = base.CreateIOPort(ioBase); ErrorPort = base.CreateIOPort(ioBase, 1); FeaturePort = base.CreateIOPort(ioBase, 1); SectorCountPort = base.CreateIOPort(ioBase, 2); LBALowPort = base.CreateIOPort(ioBase, 3); LBAMidPort = base.CreateIOPort(ioBase, 4); LBAHighPort = base.CreateIOPort(ioBase, 5); DeviceHeadPort = base.CreateIOPort(ioBase, 6); CommandPort = base.CreateIOPort(ioBase, 7); StatusPort = base.CreateIOPort(ioBase, 7); this.Initialize(); }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "DMA_0x" + base.hardwareResources.GetIOPort(0, 0).Address.ToString("X"); statusRegister = base.hardwareResources.GetIOPort(0, 0x08); commandRegister = base.hardwareResources.GetIOPort(0, 0x08); requestRegister = base.hardwareResources.GetIOPort(0, 0x09); channelMaskRegister = base.hardwareResources.GetIOPort(0, 0x0A); modeRegister = base.hardwareResources.GetIOPort(0, 0x0B); byteWordRegister = base.hardwareResources.GetIOPort(0, 0x0C); intermediateRegister = base.hardwareResources.GetIOPort(0, 0x0D); maskRegister = base.hardwareResources.GetIOPort(0, 0x0F); channel0Address = base.hardwareResources.GetIOPort(0, 0x00); channel0Count = base.hardwareResources.GetIOPort(0, 0x01); channel0Page = base.hardwareResources.GetIOPort(0, 0x87); channel1Address = base.hardwareResources.GetIOPort(0, 0x02); channel1Count = base.hardwareResources.GetIOPort(0, 0x03); channel1Page = base.hardwareResources.GetIOPort(0, 0x83); channel2Address = base.hardwareResources.GetIOPort(0, 0x04); channel2Count = base.hardwareResources.GetIOPort(0, 0x05); channel2Page = base.hardwareResources.GetIOPort(0, 0x81); channel3Address = base.hardwareResources.GetIOPort(0, 0x06); channel3Count = base.hardwareResources.GetIOPort(0, 0x07); channel3Page = base.hardwareResources.GetIOPort(0, 0x82); memory0 = base.hardwareResources.GetMemory(0); memory1 = base.hardwareResources.GetMemory(1); memory2 = base.hardwareResources.GetMemory(2); memory3 = base.hardwareResources.GetMemory(3); return(true); }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "VGAText"; miscellaneousOutput = base.hardwareResources.GetIOPort(0, 0x1C); crtControllerIndex = base.hardwareResources.GetIOPort(0, 0x04); crtControllerData = base.hardwareResources.GetIOPort(0, 0x05); crtControllerIndexColor = base.hardwareResources.GetIOPort(0, 0x24); crtControllerDataColor = base.hardwareResources.GetIOPort(0, 0x25); miscellaneousOutputWrite = base.hardwareResources.GetIOPort(0, 0x12); sequencerAddress = base.hardwareResources.GetIOPort(0, 0x14); sequencerData = base.hardwareResources.GetIOPort(0, 0x15); graphicsControllerAddress = base.hardwareResources.GetIOPort(0, 0x1E); graphicsControllerData = base.hardwareResources.GetIOPort(0, 0x1F); inputStatus1ReadB = base.hardwareResources.GetIOPort(0, 0x2A); attributeAddress = base.hardwareResources.GetIOPort(0, 0x10); attributeData = base.hardwareResources.GetIOPort(0, 0x11); memory = base.hardwareResources.GetMemory(0); return(true); }
/// <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.GetIOPort(0, 0); valuePort = hardwareResources.GetIOPort(0, 1); HAL.DebugWrite("**G**"); memory = base.HardwareResources.GetMemory(0); HAL.DebugWrite("**I**"); fifo = base.HardwareResources.GetMemory(1); HAL.DebugWrite("**J**"); return true; }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "PCI_0x" + base.hardwareResources.GetIOPort(0, 0).Address.ToString("X"); configAddress = base.hardwareResources.GetIOPort(0, 0); configData = base.hardwareResources.GetIOPort(0, 4); return true; }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { // Store reference to hardware resources this.hardwareResources = hardwareResources; // Set the driver's name base.name = "S3Trio64V2"; // Store portmanager byte portBar = (byte)(base.hardwareResources.IOPointRegionCount - 1); vgaEnableController = base.hardwareResources.GetIOPort(portBar, Register.VgaEnable); miscOutputReader = base.hardwareResources.GetIOPort(portBar, Register.MiscOutRead); miscOutputWriter = base.hardwareResources.GetIOPort(portBar, Register.MiscOutWrite); crtcControllerIndex = base.hardwareResources.GetIOPort(portBar, Register.CrtcIndex); crtcControllerData = base.hardwareResources.GetIOPort(portBar, Register.CrtcData); seqControllerIndex = base.hardwareResources.GetIOPort(portBar, Register.SequenceIndex); seqControllerData = base.hardwareResources.GetIOPort(portBar, Register.SequenceData); // Everything went fine return true; }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(HardwareResources hardwareResources) { this.HardwareResources = hardwareResources; base.Name = "VGAText"; miscellaneousOutput = base.HardwareResources.GetIOPort(0, 0x1C); crtControllerIndex = base.HardwareResources.GetIOPort(0, 0x04); crtControllerData = base.HardwareResources.GetIOPort(0, 0x05); crtControllerIndexColor = base.HardwareResources.GetIOPort(0, 0x24); crtControllerDataColor = base.HardwareResources.GetIOPort(0, 0x25); miscellaneousOutputWrite = base.HardwareResources.GetIOPort(0, 0x12); sequencerAddress = base.HardwareResources.GetIOPort(0, 0x14); sequencerData = base.HardwareResources.GetIOPort(0, 0x15); graphicsControllerAddress = base.HardwareResources.GetIOPort(0, 0x1E); graphicsControllerData = base.HardwareResources.GetIOPort(0, 0x1F); inputStatus1ReadB = base.HardwareResources.GetIOPort(0, 0x2A); attributeAddress = base.HardwareResources.GetIOPort(0, 0x10); attributeData = base.HardwareResources.GetIOPort(0, 0x11); memory = base.HardwareResources.GetMemory(0); return true; }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "DMA_0x" + base.hardwareResources.GetIOPort(0, 0).Address.ToString("X"); statusRegister = base.hardwareResources.GetIOPort(0, 0x08); commandRegister = base.hardwareResources.GetIOPort(0, 0x08); requestRegister = base.hardwareResources.GetIOPort(0, 0x09); channelMaskRegister = base.hardwareResources.GetIOPort(0, 0x0A); modeRegister = base.hardwareResources.GetIOPort(0, 0x0B); byteWordRegister = base.hardwareResources.GetIOPort(0, 0x0C); intermediateRegister = base.hardwareResources.GetIOPort(0, 0x0D); maskRegister = base.hardwareResources.GetIOPort(0, 0x0F); channel0Address = base.hardwareResources.GetIOPort(0, 0x00); channel0Count = base.hardwareResources.GetIOPort(0, 0x01); channel0Page = base.hardwareResources.GetIOPort(0, 0x87); channel1Address = base.hardwareResources.GetIOPort(0, 0x02); channel1Count = base.hardwareResources.GetIOPort(0, 0x03); channel1Page = base.hardwareResources.GetIOPort(0, 0x83); channel2Address = base.hardwareResources.GetIOPort(0, 0x04); channel2Count = base.hardwareResources.GetIOPort(0, 0x05); channel2Page = base.hardwareResources.GetIOPort(0, 0x81); channel3Address = base.hardwareResources.GetIOPort(0, 0x06); channel3Count = base.hardwareResources.GetIOPort(0, 0x07); channel3Page = base.hardwareResources.GetIOPort(0, 0x82); memory0 = base.hardwareResources.GetMemory(0); memory1 = base.hardwareResources.GetMemory(1); memory2 = base.hardwareResources.GetMemory(2); memory3 = base.hardwareResources.GetMemory(3); return true; }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "GenericVGA"; byte portBar = (byte)(base.hardwareResources.IOPointRegionCount - 1); miscellaneousOutputRead = base.hardwareResources.GetIOPort(portBar, 0x1C); crtControllerIndex = base.hardwareResources.GetIOPort(portBar, 0x04); crtControllerData = base.hardwareResources.GetIOPort(portBar, 0x05); crtControllerIndexColor = base.hardwareResources.GetIOPort(portBar, 0x24); crtControllerDataColor = base.hardwareResources.GetIOPort(portBar, 0x25); dacPaletteMask = base.hardwareResources.GetIOPort(portBar, 0x16); dacIndexRead = base.hardwareResources.GetIOPort(portBar, 0x17); dacIndexWrite = base.hardwareResources.GetIOPort(portBar, 0x18); dacData = base.hardwareResources.GetIOPort(portBar, 0x19); inputStatus1 = base.hardwareResources.GetIOPort(portBar, 0x12); miscellaneousOutputWrite = base.hardwareResources.GetIOPort(portBar, 0x12); sequencerAddress = base.hardwareResources.GetIOPort(portBar, 0x14); sequencerData = base.hardwareResources.GetIOPort(portBar, 0x15); graphicsControllerAddress = base.hardwareResources.GetIOPort(portBar, 0x1E); graphicsControllerData = base.hardwareResources.GetIOPort(portBar, 0x1F); inputStatus1ReadB = base.hardwareResources.GetIOPort(portBar, 0x2A); attributeAddress = base.hardwareResources.GetIOPort(portBar, 0x10); attributeData = base.hardwareResources.GetIOPort(portBar, 0x11); memory = base.hardwareResources.GetMemory((byte)(base.hardwareResources.MemoryRegionCount - 1)); return true; }
/// <summary> /// Initializes a new instance of the <see cref="CommandRegister"/> class. /// </summary> /// <param name="ioPort">The io port.</param> /// <param name="bits">The bits.</param> public CommandRegister(IReadWriteIOPort ioPort, byte bits) : base(ioPort, bits) { }
/// <summary> /// IOs the port region. /// </summary> /// <param name="ioPort">The io port.</param> /// <param name="bits">The bits.</param> public IOPortRegister(IReadWriteIOPort ioPort, byte bits) { this.ioPort = ioPort; this.bits = bits; }
public IDEDiskDriver (ushort ioBase) { base.name = "IDE_0x" + ioBase.ToString ("X"); base.parent = null; // no parent base.deviceStatus = DeviceStatus.Initializing; this.ioBase = ioBase; DataPort = base.CreateIOPort (ioBase); ErrorPort = base.CreateIOPort (ioBase, 1); FeaturePort = base.CreateIOPort (ioBase, 1); SectorCountPort = base.CreateIOPort (ioBase, 2); LBALowPort = base.CreateIOPort (ioBase, 3); LBAMidPort = base.CreateIOPort (ioBase, 4); LBAHighPort = base.CreateIOPort (ioBase, 5); DeviceHeadPort = base.CreateIOPort (ioBase, 6); CommandPort = base.CreateIOPort (ioBase, 7); StatusPort = base.CreateIOPort (ioBase, 7); this.Initialize (); }
public SerialDevice (ushort ioBase, byte irq) { base.name = "COM_0x" + ((uint)ioBase).ToString ("X"); base.parent = null; // no parent base.deviceStatus = DeviceStatus.Initializing; this.ioBase = ioBase; this.fifoBuffer = new byte[FIFOSize]; this.fifoStart = 0; this.fifoEnd = 0; // Receive Buffer Register (read only) RBRBase = base.CreateIOPort (ioBase); // Transmitter Holding Register (write only) THRBase = base.CreateIOPort (ioBase); // Interrupt Enable Register IERBase = base.CreateIOPort (ioBase, 1); // Divisor Latch (LSB and MSB) DLLBase = base.CreateIOPort (ioBase); DLMBase = base.CreateIOPort (ioBase, 1); // Interrupt Identification Register (read only) IIRBase = base.CreateIOPort (ioBase, 2); // FIFO Control Register (write only, 16550+ only) FCRBase = base.CreateIOPort (ioBase, 2); // Line Control Register LCRBase = base.CreateIOPort (ioBase, 3); // Modem Control Register MCRBase = base.CreateIOPort (ioBase, 4); // Line Status Register LSRBase = base.CreateIOPort (ioBase, 5); // Modem Status Register MSRBase = base.CreateIOPort (ioBase, 6); // Scratch Register (16450+ and some 8250s, special use with some boards) SCRBase = base.CreateIOPort (ioBase, 7); serialIRQ = base.CreateIRQHandler (irq); this.Initialize (); }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "COM_0x" + base.hardwareResources.GetIOPort(0, 0).Address.ToString("X"); rbrBase = base.hardwareResources.GetIOPort(0, 0); // Receive Buffer Register (read only) thrBase = base.hardwareResources.GetIOPort(0, 0); // Transmitter Holding Register (write only) ierBase = base.hardwareResources.GetIOPort(0, 1); // Interrupt Enable Register dllBase = base.hardwareResources.GetIOPort(0, 0); // Divisor Latch (LSB and MSB) dlmBase = base.hardwareResources.GetIOPort(0, 1); iirBase = base.hardwareResources.GetIOPort(0, 2); // Interrupt Identification Register (read only) fcrBase = base.hardwareResources.GetIOPort(0, 2); // FIFO Control Register (write only, 16550+ only) lcrBase = base.hardwareResources.GetIOPort(0, 3); // Line Control Register mcrBase = base.hardwareResources.GetIOPort(0, 4); // Modem Control Register lsrBase = base.hardwareResources.GetIOPort(0, 5); // Line Status Register msrBase = base.hardwareResources.GetIOPort(0, 6); // Modem Status Register scrBase = base.hardwareResources.GetIOPort(0, 7); // Scratch Register (16450+ and some 8250s, special use with some boards) fifoBuffer = new byte[fifoSize]; fifoStart = 0; fifoEnd = 0; base.deviceStatus = DeviceStatus.Online; return true; }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "AMDPCNet_0x" + hardwareResources.GetIOPortRegion(0).BaseIOPort.ToString("X"); ioProm1 = hardwareResources.GetIOPort(0, 0x0); ioProm4 = hardwareResources.GetIOPort(0, 0x4); rdp = hardwareResources.GetIOPort(0, 0x10); rap = hardwareResources.GetIOPort(0, 0x14); bdp = hardwareResources.GetIOPort(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; }
/// <summary> /// Starts this hardware device. /// </summary> /// <returns></returns> public override DeviceDriverStartStatus Start() { WriteSettings(VGAText80x25); colorMode = ((miscellaneousOutput.Read8() & 1) == 1); if (colorMode) { offset = 0x8000; bytePerChar = 2; activeControllerIndex = crtControllerIndexColor; activeControllerData = crtControllerDataColor; } else { offset = 0x0; bytePerChar = 1; activeControllerIndex = crtControllerIndex; activeControllerData = crtControllerData; } width = GetValue(CRTCommands.HorizontalDisplayEnableEnd); height = GetValue(CRTCommands.VerticalDisplayEnableEnd); width++; height = 25; base.DeviceStatus = DeviceStatus.Online; return DeviceDriverStartStatus.Started; }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "CMOS"; commandPort = base.hardwareResources.GetIOPort(0, 0); dataPort = base.hardwareResources.GetIOPort(0, 4); return true; }
/// <summary> /// Setups this hardware device driver /// </summary> /// <param name="hardwareResources"></param> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "PIC_0x" + base.hardwareResources.GetIOPort(0, 0).Address.ToString("X"); masterCommandPort = base.hardwareResources.GetIOPort(0, 0); masterDataPort = base.hardwareResources.GetIOPort(0, 1); slaveCommandPort = base.hardwareResources.GetIOPort(1, 0); slaveDataPort = base.hardwareResources.GetIOPort(1, 1); return true; }
public FloppyDiskDriver (ushort ioBase) { base.name = "FDC_0x" + ioBase.ToString ("X"); base.parent = null; // no parent base.deviceStatus = DeviceStatus.Initializing; this.ioBase = ioBase; floppyDrives = new FloppyDriveInfo[DrivesPerController]; floppyMedia = new FloppyMediaInfo[DrivesPerController]; trackCache = new TrackCache[DrivesPerController]; lastSeek = new LastSeek[DrivesPerController]; for (int drive = 0; drive < DrivesPerController; drive++) trackCache[drive].buffer = new byte[FDC.MaxBytesPerTrack]; ControllerCommands = base.CreateIOPort (ioBase); StatusPort = base.CreateIOPort (ioBase, 2); DataPort = base.CreateIOPort (ioBase, 3); ConfigPort = base.CreateIOPort (ioBase, 5); CMOSComand = base.CreateIOPort (0x70); CMOSResponse = base.CreateIOPort (0x71); floppyDMA = base.CreateDMAChannel (2); floppyIRQ = base.CreateIRQHandler (6); this.Initialize (); }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(HardwareResources hardwareResources) { this.HardwareResources = hardwareResources; base.Name = "PIT_0x" + base.HardwareResources.GetIOPort(0, 0).Address.ToString("X"); modeControlPort = base.HardwareResources.GetIOPort(0, 3); counter0Divisor = base.HardwareResources.GetIOPort(0, 0); return true; }
/// <summary> /// Setups the standard keyboard driver /// </summary> /// <returns></returns> public override bool Setup(HardwareResources hardwareResources) { this.HardwareResources = hardwareResources; base.Name = "StandardKeyboard"; commandPort = base.HardwareResources.GetIOPort(0, 0); dataPort = base.HardwareResources.GetIOPort(1, 0); fifoBuffer = new byte[fifoSize]; fifoStart = 0; fifoEnd = 0; return true; }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "FDC_0x" + base.hardwareResources.GetIOPort(0, 0).Address.ToString("X"); base.parent = null; // no parent commandPort = base.hardwareResources.GetIOPort(0, 2); statusPort = base.hardwareResources.GetIOPort(0, 4); dataPort = base.hardwareResources.GetIOPort(0, 5); configPort = base.hardwareResources.GetIOPort(0, 7); // floppyDMA = base.CreateDMAChannel(2); // floppyIRQ = base.CreateIRQHandler(6); 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 = "IDE_0x" + base.HardwareResources.GetIOPort(0, 0).Address.ToString("X"); DataPort = base.HardwareResources.GetIOPort(0, 0); ErrorPort = base.HardwareResources.GetIOPort(0, 1); FeaturePort = base.HardwareResources.GetIOPort(0, 1); SectorCountPort = base.HardwareResources.GetIOPort(0, 2); LBALowPort = base.HardwareResources.GetIOPort(0, 3); LBAMidPort = base.HardwareResources.GetIOPort(0, 4); LBAHighPort = base.HardwareResources.GetIOPort(0, 5); DeviceHeadPort = base.HardwareResources.GetIOPort(0, 6); CommandPort = base.HardwareResources.GetIOPort(0, 7); StatusPort = base.HardwareResources.GetIOPort(0, 7); for (int drive = 0; drive < DrivesPerConroller; drive++) { driveInfo[drive].Present = false; driveInfo[drive].MaxLBA = 0; } base.DeviceStatus = DeviceStatus.Online; return true; }
/// <summary> /// Setups this hardware device driver /// </summary> /// <returns></returns> public override bool Setup(IHardwareResources hardwareResources) { this.hardwareResources = hardwareResources; base.name = "VMWARE_SVGA_0x" + hardwareResources.GetIOPortRegion(0).BaseIOPort.ToString("X"); indexPort = hardwareResources.GetIOPort(0, 0); valuePort = hardwareResources.GetIOPort(0, 1); memory = base.hardwareResources.GetMemory(0); fifo = base.hardwareResources.GetMemory(1); return true; }