Справочник программиста на персональном компьютере фирмы IBM. Ввод/вывод - Инициализация и управление модемом. Часть 2

ОГЛАВЛЕНИЕ

   Высокий уровень.


   Поскольку телефонная связь очень медленная, то связь с модемом
это одна из областей, где программирование связи на Бейсике ничем
не хуже, чем на языке ассемблера. Вот грубая схема:

100 OUT BASEADDRESS+4,1        'устанавливаем бит DTR
110 '''теперь посылаем управляющую строку для вызова и установле-
120 '''ния связи - этот код меняется от модема к модему
 .
 .
200 X = INP(BASEADDRESS+2)     'получаем регистр статуса модема
210 IF X AND 2 <> 2 THEN 200   'ждем пока будет установлен бит 1
220 OUT BASEADDRESS+4,3        'устанавливаем бит RTS
230 X = INP(BASEADDRESS+2)     'получаем регистр статуса модема
240 IF X AND 1 <> 1 THEN 230   'ждем пока будет установлен бит 0
250 '''теперь посылаем данные

   Низкий уровень.


   Вот та же самая схема на языке ассемблера:

;---устанавливаем сигнал DTR
   MOV  DX,BASE_ADDRESS    ;начинаем с базового адреса
   ADD  DX,4               ;указываем на регистр контроля модема
   MOV  AL,1               ;устанавливаем бит 1
   OUT  DX,AL              ;посылаем в порт
;---посылаем управляющую строку модему для вызова
    .
   (этот код разный для разных модемов)
    .
;---ожидаем пока будет установлен сигнал DSR
   INC  DX                 ;указываем на регистр статуса модема
   INC  DX                 ;
TRY_AGAIN:  IN   AL,DX     ;получаем содержимое
   TEST AL,10B             ;проверяем второй бит
   JZ   TRY_AGAIN          ;ждем пока он не будет равен 1

;---устанавливаем бит RTS
   DEC  DX                 ;возвращаемся к регистру управления
   DEC  DX                 ;
   MOV  AL,3               ;устанавливаем сигнал RTS
   OUT  DX,AL              ;посылаем в порт
;---ожидаем сигнала CTS
   INC  DX                 ;возвращаемся к регистру статуса
   INC  DX                 ;
ONCE_MORE:  IN   AL,DX     ;получаем байт статуса
   TEST AL,1               ;проверяем бит CTS
   JZ   ONCE_MORE          ;не продолжаем пока он не установлен
;---теперь можно посылать данные