예제 #1
0
 public static void RemoveCursor()
 {
     AXP.Outb(0x3D4, 14);
     AXP.Outb(0x3D5, 0x07);
     AXP.Outb(0x3D4, 15);
     AXP.Outb(0x3D5, 0xD0);
 }
예제 #2
0
파일: PIT.cs 프로젝트: 0xF6/IvyOS
        public static void Beep(uint frequency)
        {
            uint divisor = 1193180 / frequency;

            AXP.Outb(0x43, 0xB6);
            AXP.Outb(0x42, (byte)(divisor & 0xFF));
            AXP.Outb(0x42, (byte)((divisor >> 8) & 0xFF));
        }
예제 #3
0
 private void Level_1()
 {
     // Remove Cursor
     AXP.Outb(0x3D4, 14);
     AXP.Outb(0x3D5, 0x07);
     AXP.Outb(0x3D4, 15);
     AXP.Outb(0x3D5, 0xD0);
     //
 }
예제 #4
0
파일: Power.cs 프로젝트: 0xF6/IvyOS
        public static void Reboot()
        {
            byte good = 0x02;

            while ((good & 0x02) != 0)
            {
                good = AXP.Inb(0x64);
            }
            AXP.Outb(0x64, 0xFE); //Pulse reset pin
            Cosmos.Core.Global.CPU.Halt();
        }
예제 #5
0
파일: PIT.cs 프로젝트: 0xF6/IvyOS
        public static void Mode0(uint frequency)
        {
            IDT.Remap();
            IRQ.ClearMask(0);
            IRQ.ClearMask(15);
            uint divisor = 1193180 / frequency;

            AXP.Outb(0x43, 0x30);
            AXP.Outb(0x40, (byte)(divisor & 0xFF));
            AXP.Outb(0x40, (byte)((divisor >> 8) & 0xFF));
        }
예제 #6
0
파일: IDT.cs 프로젝트: 0xF6/IvyOS
 public static void Remap()
 {
     AXP.Outb(0x20, 0x11);
     AXP.Outb(0xA0, 0x11);
     AXP.Outb(0x21, 0x20);
     AXP.Outb(0xA1, 0x28);
     AXP.Outb(0x21, 0x04);
     AXP.Outb(0xA1, 0x02);
     AXP.Outb(0x21, 0x01);
     AXP.Outb(0xA1, 0x01);
     AXP.Outb(0x21, 0x0);
     AXP.Outb(0xA1, 0x0);
 }
예제 #7
0
        public static void ClearMask(byte IRQline)
        {
            ushort port;

            if (IRQline < 8)
            {
                port = 0x20 + 1;
            }
            else
            {
                port     = 0xA0 + 1;
                IRQline -= 8;
            }
            var value = (byte)(AXP.Inb(port) & ~(1 << IRQline));

            AXP.Outb(port, value);
        }
예제 #8
0
 // IRQ0
 public static void HandleInterrupt_20(ref IRQContext aContext)
 {
     Global.PIC.EoiMaster();
     AXP.Outb(0x20, 0x20);
     PIT.called = true;
 }