/// <summary> /// Initializes a new set of IOPorts for the specified COM port number. /// </summary> /// <param name="comPortNumber">Can be either 1,2,3, or 4.</param> public COM(byte comPortNumber) { if (comPortNumber > 4 && comPortNumber != 0) { throw new Exception("Cosmos.Core->IOGroup->COM.cs-> ERROR: Unknown COM Port."); } ushort portBase = 0; switch (comPortNumber) { case 1: portBase = 0x3F8; break; case 2: portBase = 0x2F8; break; case 3: portBase = 0x3E8; break; case 4: portBase = 0x2E8; break; } Data = new IOPort(portBase); InterruptEnable = new IOPort(unchecked((ushort)(portBase + 1))); FIFOControl = new IOPort(unchecked((ushort)(portBase + 2))); LineControl = new IOPort(unchecked((ushort)(portBase + 3))); ModemControl = new IOPort(unchecked((ushort)(portBase + 4))); LineStatus = new IOPort(unchecked((ushort)(portBase + 5))); ModemStatus = new IOPort(unchecked((ushort)(portBase + 6))); Scratch = new IOPort(unchecked((ushort)(portBase + 7))); }
private static int[] GetRawDate() { IOPort p70 = new IOPort(0x70); IOPort p71 = new IOPort(0x71); int[] raw = new int[0x0b]; p70.Byte = 0x0b; p71.Byte = 0x02; //24h format + BCD encoding do p70.Byte = 0x0a; while ((p71.Byte & 0x80) == 0); for (byte i = 0; i < 0x0a; i++) { p70.Byte = i; raw[i] = p71.Word; } p70.Byte = 0x32; raw[0x0a] = p71.Word; return raw; }
public CIA(ushort address, ushort size, Irq irqLine, byte writeOnlyPinsA, byte writeOnlyPinsB) : base(address, size) { _portA = new IOPort(writeOnlyPinsA); _portB = new IOPort(writeOnlyPinsB); _irqLine = irqLine; }
public AMDPCNetIIIOGroup(ushort baseAddress) { RegisterAddress = new IOPort(baseAddress, 0x14); RegisterData = new IOPort(baseAddress, 0x10); BusData = new IOPort(baseAddress, 0x1C); MAC1 = new IOPortRead(baseAddress, 0x00); MAC2 = new IOPortRead(baseAddress, 0x04); }
//* DEVADDRESS: BAR1 + 2; // I don't know what is the benefit from this register internal ATA(bool aSecondary) { Console.WriteLine("Creating ATA IOGroup"); var xBAR0 = GetBAR0(aSecondary); var xBAR1 = GetBAR1(aSecondary); Data = new IOPort(xBAR0); SectorCount = new IOPortWrite(xBAR0, 2); LBA0 = new IOPort(xBAR0, 3); LBA1 = new IOPort(xBAR0, 4); LBA2 = new IOPort(xBAR0, 5); Command = new IOPortWrite(xBAR0, 7); Status = new IOPortRead(xBAR0, 7); DeviceSelect = new IOPortWrite(xBAR0, 6); Control = new IOPortWrite(xBAR1, 2); }
//* DEVADDRESS: BAR1 + 2; // I don't know what is the benefit from this register internal ATA(bool aSecondary) { if (aSecondary) { Debugger.DoSend("Creating Secondary ATA IOGroup"); } else { Debugger.DoSend("Creating Primary ATA IOGroup"); } var xBAR0 = GetBAR0(aSecondary); var xBAR1 = GetBAR1(aSecondary); Data = new IOPort(xBAR0); SectorCount = new IOPortWrite(xBAR0, 2); LBA0 = new IOPort(xBAR0, 3); LBA1 = new IOPort(xBAR0, 4); LBA2 = new IOPort(xBAR0, 5); Command = new IOPortWrite(xBAR0, 7); Status = new IOPortRead(xBAR0, 7); DeviceSelect = new IOPortWrite(xBAR0, 6); Control = new IOPortWrite(xBAR1, 2); }
public ATADiskDrive(bool primary, ATAControllerIdEnum aControllerId, ATABusPositionEnum aBusPosition, ATASpecLevel mDriveType) { var xBAR0 = (ushort)(!primary ? 0x0170 : 0x01F0); var xBAR1 = (ushort)(!primary ? 0x0374 : 0x03F4); IOControl = (ushort)(xBAR1 + 2); IOCommand = (ushort)(xBAR0 + 7); IOData = (ushort)xBAR0; IOStatus = (ushort)(xBAR0 + 7); IODeviceSelect = (ushort)(xBAR0 + 6); IOLBA0 = (ushort)(xBAR0 + 3); IOLBA1 = (ushort)(xBAR0 + 4); IOLBA2 = (ushort)(xBAR0 + 5); IOSectorCount = (ushort)(xBAR0 + 2); mControllerID = aControllerId; mBusPosition = aBusPosition; DriveType = mDriveType; if (DriveType == ATASpecLevel.ATA) { SendATACmd(ATACmd.Identify, IOCommand, IOStatus); } else { SendATACmd(ATACmd.IdentifyPacket, IOCommand, IOStatus); } var xBuff = (ushort *)Heap.alloc(512); for (int i = 0; i < 256; i++) { ushort read = IOPort.inw(IOData); byte upper = (byte)(read >> 8); byte lower = (byte)read; xBuff[i] = (ushort)((lower << 8) | upper); } SerialNo = GetString(xBuff, 10, 20); FirmwareRev = GetString(xBuff, 23, 8); ModelNo = GetString(xBuff, 27, 40); DeviceLa = GetString(xBuff, 54, 40); uint l = 0; byte *ptr = DeviceLa; while (*ptr != 0) { ptr++; l++; } char[] tmp = new char[l]; for (int i = 0; i < l; i++) { tmp[i] = (char)DeviceLa[i]; } Label = new string(tmp); BlockCount = ((uint)xBuff[61] << 16 | xBuff[60]) - 1; LBA48Bit = (xBuff[83] & 0x40) != 0; if (LBA48Bit) { BlockCount = ((ulong)xBuff[102] << 32 | (ulong)xBuff[101] << 16 | (ulong)xBuff[100]) - 1; } byte *xMbrData = (byte *)Heap.alloc(512); ReadBlock(0, 1, xMbrData); MBR xMBR = new MBR(); xMBR.Setup(this, xMbrData); for (int i = 0; i < xMBR.partitions.Count; i++) { DetectedPartitions.Add(xMBR.partitions[i]); } }
// Enable ACPI public static void Enable() { smiIO = new IOPort(ACPI_ENABLE); }
/// <summary> /// Writes a 16 bit word /// </summary> /// <param name="port"></param> /// <param name="data"></param> public static void outw(ushort port, ushort data) { IOPort io = new IOPort(port); io.Word = data; }
/// <summary> /// Reads a 32 bit word /// </summary> /// <param name="port"></param> /// <returns></returns> public static uint inl(ushort port) { IOPort io = new IOPort(port); return(io.DWord); }
/// <summary> /// Reads a byte /// </summary> /// <param name="port"></param> /// <returns></returns> public static byte inb(ushort port) { IOPort io = new IOPort(port); return(io.Byte); }
static byte Inb(ushort port) { io = new IOPort(port); return(io.Byte); }
internal PIC(bool aSlave) { byte aBase = (byte)(aSlave ? 0xA0 : 0x20); Cmd = new IOPort(aBase); Data = new IOPort((byte)(aBase + 1)); }
internal static bool Init() { byte *ptr = (byte *)RSDPAddress(); int addr = 0; for (int i = 19; i >= 16; i--) { addr += (*((byte *)ptr + i)); addr = (i == 16) ? addr : addr << 8; } ptr = (byte *)addr; ptr += 4; addr = 0; for (int i = 3; i >= 0; i--) { addr += (*((byte *)ptr + i)); addr = (i == 0) ? addr : addr << 8; } int length = addr; ptr -= 4; if (ptr != null && acpiCheckHeader((byte *)ptr, "RSDT") == 0) { addr = 0; int entrys = length; entrys = (entrys - 36) / 4; ptr += 36; byte *yeuse; while (0 < entrys--) { for (int i = 3; i >= 0; i--) { addr += (*((byte *)ptr + i)); addr = (i == 0) ? addr : addr << 8; } yeuse = (byte *)addr; Facp = (byte *)yeuse; if (Compare("FACP", Facp) == 0) { if (acpiCheckHeader((byte *)facpget(0), "DSDT") == 0) { byte *S5Addr = (byte *)facpget(0) + 36; int dsdtLength = *(facpget(0) + 1) - 36; while (0 < dsdtLength--) { if (Compare("_S5_", (byte *)S5Addr) == 0) { break; } S5Addr++; } if (dsdtLength > 0) { if ((*(S5Addr - 1) == 0x08 || (*(S5Addr - 2) == 0x08 && *(S5Addr - 1) == '\\')) && *(S5Addr + 4) == 0x12) { S5Addr += 5; S5Addr += ((*S5Addr & 0xC0) >> 6) + 2; if (*S5Addr == 0x0A) { S5Addr++; } SLP_TYPa = (short)(*(S5Addr) << 10); S5Addr++; if (*S5Addr == 0x0A) { S5Addr++; } SLP_TYPb = (short)(*(S5Addr) << 10); SMI_CMD = facpget(1); ACPI_ENABLE = facpbget(0); ACPI_DISABLE = facpbget(1); PM1a_CNT = facpget(2); PM1b_CNT = facpget(3); PM1_CNT_LEN = facpbget(3); SLP_EN = 1 << 13; SCI_EN = 1; smiIO = new IOPort((ushort)SMI_CMD); pm1aIO = new IOPort((ushort)PM1a_CNT); pm1bIO = new IOPort((ushort)PM1b_CNT); return(true); } } } } ptr += 4; } } return(false); }
public static void Init() { Drivers.Add(new PS2Keyboard(null)); Drivers.Add(new PS2Mouse(null)); Drivers.Add(new VideoGraphicsArray(null)); bool foundGPU = false; foreach (PCIDevice device in PCI.PCIDevices) { IDriver driver = null; if (device.type == PCIDevice.PCIType.Graphics) { foundGPU = true; } switch (device.VendorID) { case 0x1022: //AMD switch (device.DeviceID) { case 0x2000: break; //return "AMD PCnet LANCE PCI Ethernet Controller"; } break; case 0x104B: //Sony switch (device.DeviceID) { case 0x1040: break; //return "Mylex BT958 SCSI Host Adaptor"; } break; case 0x1274: //Ensoniq switch (device.DeviceID) { case 0x1371: break; //return "Ensoniq AudioPCI"; } break; case 0x15AD: //VMware switch (device.DeviceID) { case 0x0405: Drivers.Add(new NVIDIA9500MGS(device)); break; //return "VMware NVIDIA 9500MGS"; case 0x0770: break; //return "VMware Standard Enhanced PCI to USB Host Controller"; case 0x0790: break; //return "VMware 6.0 Virtual USB 2.0 Host Controller"; case 0x07A0: break; //return "VMware PCI Express Root Port"; } break; case 0x8086: //Intel switch (device.DeviceID) { case 0x7190: break; //return "Intel 440BX/ZX AGPset Host Bridge"; case 0x7191: break; //return "Intel 440BX/ZX AGPset PCI-to-PCI bridge"; case 0x7110: break; //return "Intel PIIX4/4E/4M ISA Bridge"; case 0x7112: break; //return "Intel PIIX4/4E/4M USB Interface"; } break; } switch (device.ClassCode) { case 0x01: break; //return "Mass Storage Controller"; case 0x02: break; //return "Network Controller"; case 0x03: break; //return "Display Controller"; case 0x04: break; //return "Multimedia Controller"; case 0x05: break; //return "Memory Controller"; case 0x06: break; //return "Bridge Device"; case 0x07: break; //return "Simple Communication Controller"; case 0x08: break; //return "Base System Peripheral"; case 0x09: break; //return "Input Device"; case 0x0A: break; //return "Docking Station"; case 0x0B: break; //return "Processor"; case 0x0C: break; //return "Serial Bus Controller"; case 0x0D: break; //return "Wireless Controller"; case 0x0E: break; //return "Intelligent I/O Controller"; case 0x0F: break; //return "Satellite Communication Controller"; case 0x10: break; //return "Encryption/Decryption Controller"; case 0x11: break; //return "Data Acquisition and Signal Processing Controller"; case 0xFF: break; //return "Unkown device"; } if (driver != null) { Drivers.Add(driver); } } if (!foundGPU) { IOPort.outw(0x01CE, 0x00); ushort read = IOPort.inw(0x01CF); if (read >= 0xB0C4 && read != 0xFFFF) { Drivers.Add(new BochsGraphicsAdaptor(null)); } } }
/// <summary> /// Writes a 32 bit word /// </summary> /// <param name="port"></param> /// <param name="data"></param> public static void outd(ushort port, byte data) { IOPort io = new IOPort(port); io.DWord = data; }
// Disable ACPI public static void Disable() { smiIO = new IOPort(ACPI_DISABLE); }
private static byte Read() { WaitData(); return(IOPort.inb(p60)); }
public TestIOPort(IOPort IOPort) { _IOPort = IOPort; Start(); }
private void DoListen() { while (_keepListen) { Thread.Sleep(1); if (_listener.Pending()) { TcpClient _client = _listener.AcceptTcpClient(); Trace.WriteLine("Client connected..."); _client.SendBufferSize = 4095; System.Console.WriteLine(_client.Client.AddressFamily); System.Console.WriteLine(_client.Client.ProtocolType); System.Console.WriteLine(_client.Client.SocketType); IOPort port = new IOPort(_client,m_msgReceivedSignal,this); Clients.Add(port); m_connectedSignal.Set(); } //Check if all clients are alive for (int i = 0; i < Clients.Count; i++) { IOPort port = Clients[i]; if (!port.IsConnected) { Trace.WriteLine("Dead client detected... Will be removed. "); Clients.Remove(port); } } } _listener.Stop(); }
public override double RapidErrorRate(int syn = 0) { lock (syncRoot) { UInt16[] buff = new UInt16[1]; double ErrorRate = 1; UInt16 Mantissa; UInt16 Exponent; try { EdGatingStart(false); Thread.Sleep(50); EdGatingStart(true); Thread.Sleep(edGatingTime * 1000); switch (MyParameter.MoudleChannel) { case 1: buff = IOPort.ReadMDIO(MyParameter.deviceIndex, 1, MyParameter.phycialAdress, 0xA290, IOPort.MDIOSoftHard.SOFTWARE, 1); break; case 2: buff = IOPort.ReadMDIO(MyParameter.deviceIndex, 1, MyParameter.phycialAdress, 0xA291, IOPort.MDIOSoftHard.SOFTWARE, 1); break; case 3: buff = IOPort.ReadMDIO(MyParameter.deviceIndex, 1, MyParameter.phycialAdress, 0xA292, IOPort.MDIOSoftHard.SOFTWARE, 1); break; case 4: buff = IOPort.ReadMDIO(MyParameter.deviceIndex, 1, MyParameter.phycialAdress, 0xA293, IOPort.MDIOSoftHard.SOFTWARE, 1); break; default: buff = IOPort.ReadMDIO(MyParameter.deviceIndex, 1, MyParameter.phycialAdress, 0xA290, IOPort.MDIOSoftHard.SOFTWARE, 1); break; } Exponent = Convert.ToUInt16(buff[0] >> 10); //Hig 6bit Mantissa = Convert.ToUInt16(buff[0] & 0x3FF); //Low 10bit ErrorRate = Mantissa * (Math.Pow(2, Exponent)) / (MyParameter.dDataRate * MyParameter.GatingTime * 1E+9); return(ErrorRate); } catch (InnoExCeption error) { Log.SaveLogToTxt("ErrorCode=" + ExceptionDictionary.Code._Funtion_Fatal_0x05002 + "Reason=" + error.TargetSite.Name + "Fail"); throw error; } catch (Exception error) { Log.SaveLogToTxt("ErrorCode=" + ExceptionDictionary.Code._Funtion_Fatal_0x05002 + "Reason=" + error.TargetSite.Name + "Fail"); throw new InnoExCeption(ExceptionDictionary.Code._Funtion_Fatal_0x05002, error.StackTrace); // throw new InnoExCeption(ex); } } }
public static void Write(byte a, Port PORT = Port.Com1) { WaitForWriteReady(PORT); IOPort.Outb((ushort)PORT, a); }
/// <summary> /// Reads an integer from the IO Port /// </summary> /// <returns></returns> public override uint Read32() { return(IOPort.In32(Address)); }
protected void Init() { Data = new IOPort((ushort)(port + 0)); InterruptEnable = new IOPort((ushort)(port + 1)); BaudLSB = new IOPort((ushort)(port + 0)); BaudMSB = new IOPort((ushort)(port + 1)); FIFOControl = new IOPort((ushort)(port + 2)); LineControl = new IOPort((ushort)(port + 3)); ModemControl = new IOPort((ushort)(port + 4)); LineStatus = new IOPort((ushort)(port + 5)); ModemStatus = new IOPort((ushort)(port + 6)); Scratch = new IOPort((ushort)(port + 7)); InterruptEnable.Write_Byte((byte)interrupts); LineControl.Write_Byte((byte)LineControlFlags.DivisorLatchAccessBit); BaudLSB.Write_Byte((byte)((byte)baudRate & 0x00FF)); BaudMSB.Write_Byte((byte)((byte)baudRate & 0xFF00)); // This also clears the DLAB flag LineControl.Write_Byte((byte)((byte)dataBits | (byte)stopBits | (byte)parityBits)); FIFOControl.Write_Byte((byte)(FIFOControlFlags.Enable | FIFOControlFlags.ClearReceive | FIFOControlFlags.ClearTransmit | FIFOTriggerLevel)); ModemControl.Write_Byte((byte)(ModemControlFlags.DTR | ModemControlFlags.RTS)); }
/// <summary> /// Writes a byte to the IO Port /// </summary> /// <param name="data">The data.</param> public override void Write8(byte data) { IOPort.Out8(Address, data); }
public static void nosound() { byte tmp = (byte)(IOPort.inb(0x61) & 0xFC); IOPort.outb(0x61, tmp); }
/// <summary> /// Writes a short to the IO Port /// </summary> /// <param name="data">The data.</param> public override void Write16(ushort data) { IOPort.Out16(Address, data); }
/// <summary> /// Creates a new instance of the <see cref="AC97"/> class, with the /// given buffer size. /// </summary> /// <param name="bufferSize">The buffer size in samples to use. This value cannot be an odd number, as per the AC97 specification.</param> /// <exception cref="ArgumentException">Thrown when the given buffer size is invalid.</exception> /// <exception cref="InvalidOperationException">Thrown when no AC97-compatible sound card is present.</exception> private AC97(ushort bufferSize) { if (bufferSize % 2 != 0) { // As per the AC97 specification, the buffer size cannot be odd. // (1.2.4.2 PCM Buffer Restrictions, Intel document 302349-003) throw new ArgumentException("The buffer size must be an even number.", nameof(bufferSize)); } PCIDevice pci = Cosmos.HAL.PCI.GetDeviceClass( ClassID.MultimediaDevice, // 0x04 (SubclassID)0x01 // 0x01 ); if (pci == null || !pci.DeviceExists || pci.InterruptLine > 0xF) { throw new InvalidOperationException("No AC97-compatible device could be found."); } PCI = pci; // Expose PCI device to the public API pci.EnableBusMaster(true); pci.EnableMemory(true); pci.EnableDevice(); // enable I/O space INTs.SetIrqHandler(pci.InterruptLine, HandleInterrupt); ushort NAMbar = (ushort)pci.BaseAddressBar[0].BaseAddress; // Native Audio Mixer ushort NABMbar = (ushort)pci.BaseAddressBar[1].BaseAddress; // Native Audio Bus Master pTransferControl = new IOPort((ushort)(NABMbar + 0x1B)); pMasterVolume = new IOPort((ushort)(NAMbar + 0x02)); pPCMOutVolume = new IOPort((ushort)(NAMbar + 0x18)); pBufferDescriptors = new IOPort((ushort)(NABMbar + 0x10)); pTransferStatus = new IOPort((ushort)(NABMbar + 0x16)); pLastValidEntry = new IOPort((ushort)(NABMbar + 0x15)); pGlobalControl = new IOPort((ushort)(NABMbar + 0x2C)); pResetRegister = new IOPort((ushort)(NAMbar + 0x00)); // Reset device pGlobalControl.Byte = 0x2; pResetRegister.DWord = 0xDEADBEEF; // any value will do here // Reset PCM out uint polls = 0; // The amount we polled the device for a reset pTransferControl.Byte = (byte)(pTransferControl.Byte | TC_TRANSFER_RESET); while ((pTransferControl.Byte & TC_TRANSFER_RESET) != 0 && polls < RESET_POLL_LIMIT) { // Wait until the byte is cleared polls++; } // The device hasn't responded to our reset request. Probably not a fully-compatible AC97 card. if (polls >= RESET_POLL_LIMIT) { throw new InvalidOperationException("No AC97-compatible device could be found - the reset timeout has expired."); } // Volume pMasterVolume.Word = CreateMixerVolumeValue(AC97_VOLUME_MAX, AC97_VOLUME_MAX, false); pPCMOutVolume.Word = CreateMixerVolumeValue(AC97_VOLUME_MAX, AC97_VOLUME_MAX, false); // Create all needed buffers CreateBuffers(bufferSize); // Initialization done - driver can now be activated by using Enable() }
/// <summary> /// Writes an integer to the IO Port /// </summary> /// <param name="data">The data.</param> public override void Write32(uint data) { IOPort.Out32(Address, data); }
public void VBEWrite(VBERegisterIndex index, uint value) { IOPort.outw(IndexPort, (ushort)index); IOPort.outd(DataPort, value); }
/// <summary> /// Reads a byte from the IO Port /// </summary> /// <returns></returns> public override byte Read8() { return(IOPort.In8(Address)); }
public static void SelectATADrive(byte aLbaHigh4, ushort IODeviceSelect, ATABusPositionEnum mBusPosition, ushort IOStatus) { IOPort.outb(IODeviceSelect, (byte)((byte)(ATADvcSelVal.Default | ATADvcSelVal.LBA | (mBusPosition == ATABusPositionEnum.Slave ? ATADvcSelVal.Slave : 0)) | aLbaHigh4)); ATAWait(IOStatus); }
/// <summary> /// Reads a short from the IO Port /// </summary> /// <returns></returns> public override ushort Read16() { return(IOPort.In16(Address)); }
/// <summary> /// Reads a 16 bit word /// </summary> /// <param name="port"></param> /// <returns></returns> public static ushort inw(ushort port) { IOPort io = new IOPort(port); return(io.Word); }
public static int Init() { byte *ptr = (byte *)RSDPAddress(); int addr = 0; for (int i = 19; i >= 16; i--) { addr += (*((byte *)ptr + i)); addr = (i == 16) ? addr : addr << 8; } ptr = (byte *)addr; ptr += 4; addr = 0; for (int i = 3; i >= 0; i--) { addr += (*((byte *)ptr + i)); addr = (i == 0) ? addr : addr << 8; } int length = addr; ptr -= 4; // check if address is correct ( if acpi is available on this pc ) if (ptr != null && acpiCheckHeader((byte *)ptr, "RSDT") == 0) { addr = 0; // the RSDT contains an unknown number of pointers to acpi tables int entrys = length; entrys = (entrys - 36) / 4; ptr += 36; // skip header information byte *yeuse; while (0 < entrys--) { for (int i = 3; i >= 0; i--) { addr += (*((byte *)ptr + i)); addr = (i == 0) ? addr : addr << 8; } yeuse = (byte *)addr; // check if the desired table is reached Facp = (byte *)yeuse; if (Compare("FACP", Facp) == 0) { if (acpiCheckHeader((byte *)facpget(0), "DSDT") == 0) { // search the \_S5 package in the DSDT byte *S5Addr = (byte *)facpget(0) + 36; // skip header int dsdtLength = *(facpget(0) + 1) - 36; while (0 < dsdtLength--) { if (Compare("_S5_", (byte *)S5Addr) == 0) { break; } S5Addr++; } // check if \_S5 was found if (dsdtLength > 0) { // check for valid AML structure if ((*(S5Addr - 1) == 0x08 || (*(S5Addr - 2) == 0x08 && *(S5Addr - 1) == '\\')) && *(S5Addr + 4) == 0x12) { S5Addr += 5; S5Addr += ((*S5Addr & 0xC0) >> 6) + 2; // calculate PkgLength size if (*S5Addr == 0x0A) { S5Addr++; // skip byteprefix } SLP_TYPa = (short)(*(S5Addr) << 10); S5Addr++; if (*S5Addr == 0x0A) { S5Addr++; // skip byteprefix } SLP_TYPb = (short)(*(S5Addr) << 10); SMI_CMD = facpget(1); ACPI_ENABLE = facpbget(0); ACPI_DISABLE = facpbget(1); PM1a_CNT = facpget(2); PM1b_CNT = facpget(3); PM1_CNT_LEN = facpbget(3); SLP_EN = 1 << 13; SCI_EN = 1; smiIO = new IOPort((ushort)SMI_CMD); pm1aIO = new IOPort((ushort)PM1a_CNT); pm1bIO = new IOPort((ushort)PM1b_CNT); return(0); } else { Console.WriteLine("\\_S5 parse error.\n"); } } else { Console.WriteLine("\\_S5 not present.\n"); } } else { Console.WriteLine("DSDT invalid.\n"); } } ptr += 4; } Console.WriteLine("no valid FACP present.\n"); } else { Console.WriteLine("no acpi.\n"); } return(-1); }
/// <summary> /// Writes a byte /// </summary> /// <param name="port"></param> /// <param name="data"></param> public static void outb(ushort port, byte data) { IOPort io = new IOPort(port); io.Byte = data; }
private static byte RTC_Register(byte aNo) { IOPort.Outb((byte)cmos.Address, aNo); return(IOPort.Inb((byte)cmos.Data)); }
/// <summary> /// Writes a 32 bit word /// </summary> /// <param name="port"></param> /// <param name="data"></param> public static void outl(ushort port, uint data) { IOPort io = new IOPort(port); io.DWord = data; }
private void SelectDrive(byte aLbaHigh4) { IOPort.outb(IODeviceSelect, (byte)((byte)(ATADvcSelVal.Default | ATADvcSelVal.LBA | (mBusPosition == ATABusPositionEnum.Slave ? ATADvcSelVal.Slave : 0)) | aLbaHigh4)); Wait(); }