struct port_data {
int uart_address;
int head_pointer;
int tail_pointer;
char buffer[ 1024 ];
};
void far interrupt isr()
{
unsigned char c;
int space_used;
c = ( unsigned char ) inp( port.uart_address );
space_used = port.head_pointer - port.tail_pointer;
if ( space_used < 0 )
space_used += 1024;
if ( space_used < 1023 ) {
port.buffer[ port.head_pointer++ ] = c;
port.head_pointer &= 1023;
}
outp( 0x20, 0x20 );
}
/* End of File */