コード例 #1
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);
        }
コード例 #2
0
ファイル: Serial.cs プロジェクト: mwoodruff1/MOSA-Project
        /// <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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
ファイル: VGAText.cs プロジェクト: mwoodruff1/MOSA-Project
        /// <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);
        }
コード例 #5
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);
        }
コード例 #6
0
        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();
        }
コード例 #7
0
ファイル: CMOS.cs プロジェクト: tralivali1234/MOSA-Project
        /// <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);
        }
コード例 #8
0
ファイル: PIT.cs プロジェクト: tralivali1234/MOSA-Project
        /// <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);
        }
コード例 #9
0
        /// <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);
        }
コード例 #10
0
        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();
        }
コード例 #11
0
ファイル: PCIController.cs プロジェクト: sharpos/SharpOS
		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 ();
		}
コード例 #12
0
ファイル: VMwareSVGAII.cs プロジェクト: djlw78/Mosa
        /// <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);
        }
コード例 #13
0
ファイル: TestDriver.cs プロジェクト: rtownsend/MOSA-Project
        /// <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;
        }
コード例 #14
0
ファイル: PIC.cs プロジェクト: mwoodruff1/MOSA-Project
        /// <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);
        }
コード例 #15
0
ファイル: TestDriver.cs プロジェクト: djlw78/Mosa
        /// <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);
        }
コード例 #16
0
        /// <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);
        }
コード例 #17
0
        /// <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);
        }
コード例 #18
0
        /// <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);
        }
コード例 #19
0
ファイル: S3Trio64V2.cs プロジェクト: djlw78/Mosa
        /// <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);
        }
コード例 #20
0
ファイル: SerialDevice.cs プロジェクト: willvin313/SharpOS
        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();
        }
コード例 #21
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();
        }
コード例 #22
0
ファイル: DMA8Bit.cs プロジェクト: yonglehou/MOSA-Project
        /// <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);
        }
コード例 #23
0
ファイル: VGAText.cs プロジェクト: mwoodruff1/MOSA-Project
        /// <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);
        }
コード例 #24
0
ファイル: VMwareSVGAII.cs プロジェクト: Zahovay/MOSA-Project
        /// <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;
        }
コード例 #25
0
        /// <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;
        }
コード例 #26
0
ファイル: S3Trio64V2.cs プロジェクト: rtownsend/MOSA-Project
        /// <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;
        }
コード例 #27
0
ファイル: VGAText.cs プロジェクト: Zahovay/MOSA-Project
        /// <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;
        }
コード例 #28
0
ファイル: DMA8Bit.cs プロジェクト: rtownsend/MOSA-Project
        /// <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;
        }
コード例 #29
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;
        }
コード例 #30
0
ファイル: TestDriver.cs プロジェクト: djlw78/Mosa
 /// <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)
 {
 }
コード例 #31
0
 /// <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;
 }
コード例 #32
0
ファイル: IDEDiskDriver.cs プロジェクト: sharpos/SharpOS
		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 ();
		}
コード例 #33
0
ファイル: SerialDevice.cs プロジェクト: sharpos/SharpOS
		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 ();
		}
コード例 #34
0
ファイル: Serial.cs プロジェクト: Profi-Concept/MOSA-Project
        /// <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;
        }
コード例 #35
0
ファイル: AMDPCNetII.cs プロジェクト: pacificIT/MOSA-Project
        /// <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;
        }
コード例 #36
0
 /// <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;
 }
コード例 #37
0
ファイル: VGAText.cs プロジェクト: Zahovay/MOSA-Project
        /// <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;
        }
コード例 #38
0
ファイル: CMOS.cs プロジェクト: pacificIT/MOSA-Project
        /// <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;
        }
コード例 #39
0
ファイル: PIC.cs プロジェクト: davidleon/MOSA-Project
        /// <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;
        }
コード例 #40
0
ファイル: FloppyDiskDriver.cs プロジェクト: sharpos/SharpOS
		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 ();
		}
コード例 #41
0
ファイル: PIT.cs プロジェクト: Zahovay/MOSA-Project
        /// <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;
        }
コード例 #42
0
        /// <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;
        }
コード例 #43
0
        /// <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;
        }
コード例 #44
0
ファイル: TestDriver.cs プロジェクト: rtownsend/MOSA-Project
 /// <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)
 {
 }
コード例 #45
0
ファイル: IDEController.cs プロジェクト: Zahovay/MOSA-Project
        /// <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;
        }
コード例 #46
0
ファイル: VMwareSVGAII.cs プロジェクト: hj1980/Mosa
        /// <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;
        }