Коммуникационная программа CHAT - часть 11
; параметры COM-порта
installed DB ? ; установлен ли порт на этом компьютере? (1=да,0=нет) baud_rate DW ? device_conn DB ? ; M(Модем), D(Нуль-модем) parity DB ? ; N(ONE), O(DD), E(VEN), S(PACE), M(ARK) stop_bits DB ? ; 1, 2
; счетчики ошибок
error_block DW 8 DUP(?)
; порты 8250
DATREG DW ? ; регистр данных IER DW ? ; регистр управления прерываниями IIR DW ? ; регистр идентификации прерывания LCR DW ? ; регистр управления линией MCR DW ? ; регистр управления модемом LSR DW ? ; регистр состояния линии MSR DW ? ; регистр состояния модема
DLL EQU DATREG ; младший регистр делителя DLH EQU IER ; старший регистр делителя
; указатели буферов FIFO
; индекс первого символа в буфере передатчика
start_s_data DW ?
; индекс первого свободного элемента буфера передатчика
end_s_data DW ?
; индекс первого символа в буфере приемника
start_r_data DW ?
; индекс первого свободного элемента буфера приемника
end_r_data DW ?
; счетчики количества символов в буферах
size_s_data DW ? ; число символов в буфере передатчика size_r_data DW ? ; число символов в буфере приемника
; буфера
send_buf DB S_SIZE DUP(?) ; буфер передатчика reciave_buf DB R_SIZE DUP(?) ; буфер приемника
SP_TAB ENDS
EFRAME EQU error_block+6 ; ошибка синхронизации EPARITY EQU error_block+8 ; ошибка четности EOVFLOW EQU error_block ; произошло переполнение буфера EDSR EQU error_block+12 ; модем не ответил сигналом DSR
EOVRUN EQU error_block+2 ; ошибка переполнения EBREAK EQU error_block+4 ; обнаружен запрос на прерывание
EXMIT EQU error_block+10 ; ошибка при передаче ECTS EQU error_block+14 ; модем не ответил сигналом CTS
; ; DGROUP GROUP _DATA
_DATA SEGMENT public 'DATA'
DIV50 DW 2304
; текущий номер области данных порта
CURRENT_AREA DW AREA1
; область данных для каждого порта
AREA1 SP_TAB <1,INT_COM1,E_IRQ4,D_IRQ4,EOI4> ; область данных COM1 AREA2 SP_TAB <2,INT_COM2,E_IRQ3,D_IRQ3,EOI3> ; область данных COM2 AREA3 SP_TAB <3,INT_COM3,E_IRQ4,D_IRQ4,EOI4> ; область данных COM3 AREA4 SP_TAB <4,INT_COM4,E_IRQ3,D_IRQ3,EOI3> ; область данных COM4