📄 classic.cpp
字号:
// ******************** START OF CLASSIC.CPP ********************
//
//
#include <dos.h>
#include "rs232.h"
#include "pc8250.h"
#include "_pc8250.h"
#include "pcirq.h"
#include "classic.h"
void classic_isr( struct classic_data *isr_info )
{
_enable();
int port = inp( isr_info->status_register );
port &= 7;
if ( isr_info->data_pointers[ port ] )
isr_8250( isr_info->data_pointers[ port ] );
}
ClassicHandler::ClassicHandler( irq_name irq_line,
int status_register_address )
{
int i;
isr_info.status_register = status_register_address;
for ( i = 0 ; i < 8 ; i++ )
isr_info.data_pointers[ i ] = 0;
irq = irq_line;
connected = ConnectToIrq( irq,
&isr_info,
(void (*)( void *)) classic_isr );
}
ClassicHandler::~ClassicHandler( void )
{
if ( connected == RS232_SUCCESS )
DisconnectFromIRQ( irq );
}
RS232Error ClassicHandler::AddPort( RS232PortName port_name,
struct isr_data_block *data )
{
if ( connected != RS232_SUCCESS )
return connected;
if ( isr_info.data_pointers[ port_name - COM5 ] )
return RS232_PORT_IN_USE;
isr_info.data_pointers[ port_name - COM5 ] = data;
return RS232_SUCCESS;
}
void ClassicHandler::DeletePort( RS232PortName port_name )
{
isr_info.data_pointers[ port_name - COM5 ] = 0;
}
// ******************** END OF CLASSIC.CPP ********************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -