Hi Guys,
I needed to output to serial today so I wrote a small file to
support that. One of the file goes in ADC the otherone in X86 J
Index: Kernel/Core/ADC/X86/IO.cs
===================================================================
--- Kernel/Core/ADC/X86/IO.cs (revision 457)
+++ Kernel/Core/ADC/X86/IO.cs (working copy)
@@ -460,6 +460,34 @@
#endregion
//03E8-03EF - serial port, same as 02E8, 02F8 and 03F8
+ /// <summary>
+ /// Port 0x03F8
+ /// </summary>
+ UART_Transmit_Receive_Buffer = 0x03F8,
+ /// <summary>
+ /// Port 0x03F9
+ /// </summary>
+ UART_Interrupt_Enable_Register = 0x03F9,
+ /// <summary>
+ /// Port 0x03FA
+ /// </summary>
+ UART_Interrupt_Identification_Register = 0x03FA,
+ /// <summary>
+ /// Port 0x03FB
+ /// </summary>
+ UART_Line_Control_Register = 0x03FB,
+ /// <summary>
+ /// Port 0x03FC
+ /// </summary>
+ UART_Modem_Control_Register = 0x03FC,
+ /// <summary>
+ /// Port 0x03FD
+ /// </summary>
+ UART_Line_Status_Register = 0x03FD,
+ /// <summary>
+ /// Port 0x03FE
+ /// </summary>
+ UART_Modem_Status_Register = 0x03FE
//03F0-03F7 - First Floppy Disk Controller
//03F8-03FF - serial port (8250,8251,16450,16550)
};
Kveðja/Regards
Ásgeir Halldórsson
E.C. Software
using AOTAttr = SharpOS.AOT.Attributes;
namespace SharpOS.ADC
{
public class Serial
{
[AOTAttr.ADCStub]
public static void Setup()
{
Kernel.Warning("Serial.Setup - not implemented!");
}
[AOTAttr.ADCStub]
public static void PutChar(byte ch)
{
Kernel.Warning("Serial.PutChar - not implemented!");
}
}
}
using SharpOS.AOT.X86;
namespace SharpOS.ADC.X86
{
public class Serial
{
public static void Setup()
{
IO.Out8(IO.Port.UART_Interrupt_Enable_Register, 0x00);
// Disable all interrupts
IO.Out8(IO.Port.UART_Line_Control_Register, 0x80);
// Enable DLAB (set baud rate divisor)
IO.Out8(IO.Port.UART_Transmit_Receive_Buffer, 0x03);
// Set divisor to 3 (lo byte) 38400 baud
IO.Out8(IO.Port.UART_Interrupt_Enable_Register, 0x00);
// (hi byte)
IO.Out8(IO.Port.UART_Line_Control_Register, 0x03);
// 8 bits, no parity, one stop bit
IO.Out8(IO.Port.UART_Interrupt_Identification_Register,
0xC7); // Enable FIFO, clear them, with 14-byte threshold
IO.Out8(IO.Port.UART_Modem_Control_Register, 0x0B);
// IRQs enabled, RTS/DSR set
}
private static bool CanTransmit()
{
return (IO.In8(IO.Port.UART_Modem_Status_Register) &
0x20) != 0;
}
public static void PutChar(byte ch)
{
while (!CanTransmit())
continue;
IO.Out8(IO.Port.UART_Transmit_Receive_Buffer, ch);
}
}
}
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
SharpOS-Developers mailing list
SharpOS-Developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sharpos-developers