Программирование игр для Windows. Советы профессионала


Коммуникационная программа: NLINK - часть 4


_outp(port_base + SER_LCR, SER_DIV_LATCH_ON);

// посылаем младший и старший байты делителя

_outp(port_base + SER_DLL, baud);

_outp(port_base + ser_dlh, 0) ;

// устанавливаем конфигурацию порта

_outp(port_base + SER_LCR, configuration);

// разрешаем прерывания

_outp(port_base + SER_MCR, SER_GP02);

_outp(port_base + SER_IER, 1);

// откладываем, работу с контроллером прерываний,

// пока не установим процедуру обработки прерывания

if (port_base == СОМ_1)

{

Old_Isr = _dos_getvect(INT_SER_PORT 0);,

_dos_setvect(INT_SER_PORT_0, Serial_Isr) ;

printf("\n0pening Communications Channel Com Port #1...\n");

}

else

{

Old_Isr = _dos_getvect(INT_SER_PORT_1);

_dos_setvect(INT_SER_PORT_1, Serial_Isr) ;

printf("\n0pening Communications Channel Com Port #2...\n");

}

// разрешаем прерывание СОМ-порта на уровне контроллера прерываний

old_int_mask = _inp(PIC_IMR);

_outp(PIC_lMR, (port_base==COM_l) ? (old_int_mask & OxEF):(old_int_mask & OxF7 ) );                                

} // конец функции                                                ///////////////////////////////////////////////////////////

Close_Serial (int port_base)

{                                   

// функция закрывает СОМ-порт, запрещает вызов его прерываний

// и восстанавливает старый обработчик прерывания           

// запрещаем прерывания по событиям СОМ-порта

_outp(port_base + SER_MCR, 0) ;

_outp(port_base + SER_IER, 0).;

_outp(PIC_IMR, old_int_mask );

// восстанавливаем старый обработчик прерывания

if (port_base == СОМ_1)

{

_dos_setvect(INT_SER_PORT_0, 01d_Isr) ;

printf("\nClosing Conuflunications Channel Corn Port #1.\n");

}

else

{

_dos_setvect(INT_SER_PORT_l, 0ld_Isr);

printf("\nClosing Communications Channel Com Port #2.\n");

}

// конец функции // ОСНОВНАЯ ФУНКЦИЯ /////////////////////////////

main ()

{

char ch;

int done=0;

printf("\nNull Modem Terminal Communications Program.\n\n");

// открываем СОМ1

Open_Serial(COM_1,SER_BAUD_9600,




Начало  Назад  Вперед



Книжный магазин