示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        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();
        }
示例#5
0
        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();
        }
示例#6
0
        /// <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);
        }
示例#7
0
        /// <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);
        }
示例#8
0
        /// <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;
        }
示例#9
0
        /// <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;
        }
示例#10
0
        /// <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;
        }
示例#11
0
		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 ();
		}
示例#12
0
文件: GenericVGA.cs 项目: hj1980/Mosa
        /// <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;
        }
示例#13
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 = "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;
        }
示例#14
0
		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 ();
		}