#include "serial.h" #include "string.h" void serial_init( serial_t *serial ) { memset( serial, 0, sizeof( serial_t ) ); port8_init( &serial->port_3F8, 0x3F8 ); port8_init( &serial->port_3FD, 0x3FD ); } void serial_put_char( serial_t *serial, const char c ) { uint8_t status; do { status = port8_read( &serial->port_3FD ); } while( ( status & 0x20 ) == 0 ); port8_write( &serial->port_3F8, c ); } void serial_put_string( serial_t *serial, const char *s ) { for( size_t i = 0; i < strlen( s ); i++ ) { serial_put_char( serial, s[i] ); } } void serial_put_newline( serial_t *serial ) { serial_put_char( serial, '\n' ); } //~ outb(0x3FB, 0x83); /* DLAB = 1 */ //~ outb(0x3F8, 0x0C); /* 9600 Baud */ //~ outb(0x3F9, 0x00); //~ outb(0x3FB, 0x03); /* DLAB = 0 */ //~ outb(0x3F9, 0x00); /* keine Interrupts auslösen */ //~ outb(0x3FA, 0x00); /* FIFOs deaktiviert (8250, 16450) */ //~ outb(0x3FC, 0x00); /* Loopback deaktivieren, Aux1 & Aux2 deaktivieren */ //~ outb(0xe9, c); //~ outb(0x3f8, c); //~ while ((inb(0x3fd) & 0x20) == 0) asm("nop"); //~ int is_transmit_empty() { //~ return inb(PORT + 5) & 0x20; //~ } //~ void write_serial(char a) { //~ while (is_transmit_empty() == 0); //~ outb(PORT,a); //~ }