Из газеты Echo #07, Брест, 11.2000
+-----------------
| |
| ПОДКЛЮЧЕНИЕ HAYES-МОДЕМА К СПЕКТРУМУ |
| |
-----------------+
(C) Криницын Сергей
О подключении hayes-модемов к спектру-
му писалось во многих электронных изда-
ниях. Но к сожалению, зачастую большую
часть этих статей занимало перечисление
достоинств hayes перед c-dos, а пояснения
к схеме сводились к фразе вроде: "распаяй
проводки к системному разъему и все круто
заработает". Увы, не все так просто. По
этому в данной статье я попробую расска-
зать о подключении более детально.
1. ВЫБОР МОДЕМА. К спектруму подклю-
чается только ВСТРОЕННЫЙ писишный модем.
При зтом марка особой роли не играет. Это
может быть не только hayes, но и UMC и др.
Основное - не экономить,покупая реликты на
2400, а сразу покупать более скоростной
модем. Спектрумовские терминалки (например
STERM 1. 1) могут нормально работать с мо-
демами и на 33600. К тому же данный девайс
не так и дорог, модем на 14400 стоит
14-15$. При покупке необходимо обратить
внимание на перемычки на плате модема. С
помощью их устанавливается, какой порт бу-
дет эмулировать модем. Выполняются они в
виде штырьков либо колодки микровыключате-
лей. Рядом с ними, на плате, обычно нари-
сована табличка состоящая из трех колонок:
номера порта, положения перемычек и номера
прерывания. Необходимо учитывать, что спе-
ктрумовские терминалки обычно работают с
модемом включенным на COM1 с прерыванием
IRQ4.
2. ПОДКЛЮЧЕНИЕ. Сразу хочу сказать,
что модем включается в 62 контактный ра-
зъем, найти который может оказатся затруд-
нительно. Можно конечно распаять проводки
прямо на контактные площадки модема, но
если вы купили новый модем, с гарантией,
то это лучше не делать. Как выход из поло-
жения можно использовать разъем для карт-
риджа от неисправной DENDY. Так как он 60
контактный, его нужно доработать, а имен-
но: стенку с одной стороны пропилить пил-
кой по металлу, а затем натфилем расширить
до толщины платы. В результате первые кон-
такты разъема будут контачить со вторыми
контактными площадками модема. Первыми ко-
нтактными площадками модема можно смело
пренебречь т. к. одна из них (GND) дубли-
руется, а другая в модемах не использует-
ся. Из доработанного разъема рекомендую
выкинуть лишние контакты и проконтролиро-
вать, чтобы расположенные параллельно кон-
такты не замыкались, иначе включив свой
комп с вынутой из разъема платой модема вы
попросту его спалите. И еще одна гадость:
не пытайтись распаивать данный раъем про-
водом, ничего хорошего не получится. Мон-
тировать его нужно на печатную плату. При
пайке модем должен быть вставлен в разъем,
т. к. китайцы подло экономят на теплоус-
тойчивых пластмассах и пружинные контакты
норовят проплавив пластмассу сомкнуться.
3. СХЕМА ПОДКЛЮЧЕНИЯ. Я знаю о двух
схемах подключения: схема Кондратьева, ис-
пользует NMI и требует перешивки ПЗУ компа
(в чем и вся проблема.); и доработанная
схема, использующая INT в режиме IM2.
Так как модернизированная схема была
найдена в ФИДОшной зхе и в электронных из-
даниях пока не встречалась, привожу ее с
небольшими доработками.
DD1-К1533ЛЛ1
DD2-К1533ТМ2
DD3-К1533ЛП8
DD4-К1533ЛА3
R1,R2-1K
Доpаботка схемы Spectrum'а
Примечание: Резистор 560 Ом.
Схема подключения к Spectrum'у
System Модем
port
+-----+ +---+------+
|A 8 |----> |a31| A 0 |
|A 9 |----> |a30| A 1 |
|A 10 |----> |a29| A 2 |
|D 0 |----> |a9 | D 0 |
|D 1 |----> |a8 | D 1 |
|D 2 |----> |a7 | D 2 |
|D 3 |----> |a6 | D 3 |
|D 4 |----> |a5 | D 4 |
|D 5 |----> |a4 | D 5 |
|D 6 |----> |a3 | D 6 |
|D 7 |----> |a2 | D 7 |
| | |a28| A 3 | -+
| | |a27| A 4 | | HА
| | |a26| A 5 | |+5v
| | |a25| A 6 | |чеpез
| | |a24| A 7 | |3-10k
| | |a23| A 8 | |
| | |a22| A 9 | -+
| | |a21| A10 |-- на землю
| | |a11| AEN |-- на землю
| | |b9 | +12v |-->к соответст-
| | |b07| -12v |--> вующим
| | |b05| -5v |-->источникам
| GND |----> |b01| GND |--> если
| GND |----> |b31| GND |-->требуется
| GND |----> |b10| GND |--> модему
| +5v |----> |b3 | +5v |-->
| +5v |----> |B29| +5v |-->
|RESET|- на -|b2 | RESET|
| RD |- |b13| IOWR |
| A4 |- п |b14| IORD |
| IORQ|- л |b24| IORQ4|
| WR |- а | | |
| A11 |- т | | |
| INT |- у | | |
| D1 |- +---+------+
+-----+ сигнал
Так как существует множество фирм вы-
пускающих железо для PC, то вполне возмож-
но, что в вашем модеме будут либо отсутст-
вовать некоторые контакты, либо будут "ли-
шние". Обнаружив это нестоит паниковать,
просто в вашем модеме есть дополнительные
функции, не используемые данной схемой.
Так что можете это смело игнорировать.
Для нормальной работы данной схемы
требуется стабильная шина даных. Опреде-
лить наличие оной можно при помощи прог-
рамм TEST INT либо TEST 4.22.
Если шина данных нестабильна, а пере-
шить ПЗУ нет возможности, можно использо-
вать терминалку MELON 1.90. Она не исполь-
зует прерывания и имеет более навороченный
по сравнению с STERM 1.1 интерфейс.
И в заключении хотелось бы сказать не-
сколько слов о работе с BBS. Для спектру-
миста привыкшего работать с BBS посредст-
вом EMS, будет непросто разобраться в ме-
сиве символов приходящих от PC BBS. В свя-
зи с этим хотелось бы обратиться к виртуа-
льщикам: может быть среди вас найдется че-
ловек, способный организовать работу SPEC-
TRUM-BBS, где бы у спектрумиста не возни-
кало подобных проблем? Высокие скорости
обмена hayes-модемов и отсутствие проблем
с междугородним коннектом позволит такой
BBS составить конкуренцию C-DOS BBS, кото-
рых впрочем в республике почти не оста-
лось.
В ZIP-архиве прилагающемся к этой га-
зете вы найдете доработанную версию STERM.
Приложение:
ОПИСАНИЕ КОМАНД HAYES-МОДЕМА
Данный текст был найден на одной из
BBS и несмотря на явную неполноту, на мой
взгляд, представляет определенный интерес.
Но т.к. эксперименты с командами могут
иметь весьма неприятные последствия, сле-
дует учитывать следующее:
1. Модем содержит энергонезависимую
память (а некоторые модели и ПЗУ с элект-
рическим стиранием), и результат выполне-
нения отдельных команд будет сохранен и
при отключении питания.
2. В связи с этим не стоит вводить
команды смысл которых вы не понимаете.
3. Заимев новую версию терминалки, по-
смотрите, какие команды установлены в
строке инициализации модема по умолчанию
(имеется печальный опыт). Вполне достаточ-
но команды ATZ.
Соблюдение этих несложных правил изба-
вит вас от многих неприятностей.
1.1 Общее описание команд Hayes'a
Все команды надо начинать префиксом AT
(или At, aT, at) и заканчивать <CR>. Суще-
ствует несколько исключений, которые будут
описаны ниже. Все вводимые данные передаю-
тся эхом обратно в компьютер (терминал).
Модем автоматически настраивает свою ско-
рость передачи данных и формат знака к па-
раметрам терминала.
Чтобы изменить скорость обмена, надо
определить ее в командной строке завершен-
ной <CR> на терминале. Модем дает согласие
на введенное изменение и отвечает OK. Ко-
манды можно объединять в командную сторку,
для улучшения ясности в командную строку
можно вводить пробелы, тире итп.: AT DP 8W
(044) 430-49-00, легче прочитать и понять
чем ATDP8W0444304900.
Командная строка может содержать не
более 40 символов, исключая пробелы и пре-
фикс AT. В случае, если строка длиннее 40
символов, модем возвращает ответ ERROR и
игнорирует командную строку. Редактирова-
ние ошибочных символов командной строки
осуществляется с помощью клавиши <Backspa-
se>. На все правильно введенные и исполне-
нные команды модем отвечает OK. Модем мо-
жет быть настроен на передачу ответа в фо-
рме цифрового кода (удобно для програмного
обслуживания модема). Каждый ответ являет-
ся одно- или двузначным кодом. После вклю-
чения модем (как правило) настроен на пе-
редачу ответа в символьном виде.
1.2 Основной набор команд
AT - начало (префикс) командной стро-
ки. После получения этой команды модем ав-
томатически подстраивает скорость передачи
и формат знака к параметрам терминала.
A - ручной ответ. Команда переключает
модем из командного режима на режим ожида-
ния сигнала несущей вызывающего модема.
После получения сигнала несущей, модем
реализует процедуру положительного ответа
на вызов и действует как переключенный на
процедуру автоматического ответа. Если мо-
дем работает на выделенных линиях связи,
то отвечает несущей без указания частоты.
В этом случае если автоматический ответ
(auto-answer) выключен (S0=0) и происходит
вызов, то для получения связи надо пере-
дать команду ATA.
A/ - модем повторяет предыдущую ко-
мандную строку. Команда подается без пре-
фикса (AT) и нажатия <CR>.
Bn - выбор коммуникационного стандар-
та:
n = 0 CCITT V. 21, V. 22, V. 22 bis,
n = 1 BELL 103/202A.
Ds - автоматический набор номера. Пос-
ле получения этой команды, модем начинает
набор номера и при получении связи перехо-
дит в режим передачи.
Команда состоит из телефонного номера,
в состав которого могут входить следующие
управляющие параметры:
s = P обозначает, что цифры телефонно-
го номера идущие после символа P модем до-
лжен набирать импульсно (используются сим-
волы 0-9 ).
s = T обозначает, что цифры телефонно-
го номера идущие после символа T модем до-
лжен набирать частотой (разрашено исполь-
зовать символы 0-9, A-D, * а также #).
s = , обозначает перерыв перед набором
следующей цифры (2s).
s = ; если применяется как последний
знак в командной строке, то модем после
набора номера переходит в командный режим
работы.
s = @ модем ожидает 5-секундной тишины
на линии, если она не появится в течении
30s (содержимое регистра S7), модем отклю-
чается, и отвечает NO ANSWER.
s = ! если знак ! стоит перед знаками
последовательности набора, модем переходит
в состояние ON HOOK (кладет трубку) на 0,
5s, а затем снова перейдет в состояние OFF
HOOK (снимает трубку).
s = S модем набирает телефонный номер
записанный в памяти EEROM.
s = R при записи как последний символ
в командной строке, устанавливает модем
после набора номера в режим "answer", но
только в том случае, если модем звонит к
модему "originate".
s = W модем ожидает ответ станции
(длинный гудок) перед дальнейшим набором
телефонного номера (например выход на ав-
томатическую междугороднюю связь).
En - местное эхо ON/OFF. После команды
E1 модем возвращает эхо каждого знака пе-
редаваемого ему, что позволяет узнать, как
действительно работает командная линия.
Команда E0 блокирует эту функцию.
n = 0 эхо выключено,
n = 1 эхо включено
Hn - управление линией. Команда испо-
льзуется прежде всего при окончании теле-
фонной связи:
n = 0 отключение модема от линии,
n = 1 подключение модема на линию.
In - производственный код и контроль-
ная сумма:
n = 0 сообщение сода продукта,
n = 1 подсчет контрольной суммы прог-
раммы содержащейся в ROM (EPROM),
n = 2 модем проверяет состояние внут-
ренней памяти ROM и возвращает сообщение
OK или ERROR.
Ln - установка громкости сигнала
встроенного динамика (громкоговорителя).
n = 0, 1 низкая
n = 2 средняя
n = 3 высокая
Mn - управление динамиком (громкогово-
рителем).
n = 0 динамик выключен,
n = 1 динамик включен только во время
набора номера и выключается после обнару-
жения несущей,
n = 2 динамик включен все время,
n = 3 динамик включается после набора
последней цифры номера и выключается после
обнаружения несущей отвечающего модема.
Qn - управление ответом модема.
n = 0 ответ включен,
n = 1 ответ выключен. Независимо от
состояния Q0 или Q1 модем всегда сообщает
содержание S-регистров, код продукта, кон-
трольную сумму и результаты теста (смотри
команды S, I, а также &T).
O - после прохождения команды, модем
настраивается на режим передачи данных и
отвечает CONNECT (если до этого он находи-
лся в командном режиме работы).
Sr - управление S-регистрами.
Sr? - считывание содержимого S-регист-
ра номер r.
Sr=nnn - ввод числового параметра nnn
в S-регистр номер r. Все команды модифици-
руют содержимое одного или более S-регист-
ров. Некоторые S-регистры содержат времен-
ные параметры, которые можно поменять то-
лько командой S.
Vn - выбор вида ответа модема.
n = 0 ответ цифровым кодом,
n = 1 ответ в символьном виде на анг-
лийском языке.
Стандартный набор ответов модема
OK (0)- Модем выполнил команду
CONNECT (1)- Модем подключен со скоро-
стью 300bps после команды X0 возможна ра-
бота со скоростью 600, 1200, 2400 bps.
RING (2)- Модем обнаружил правильный
сигнал звонка. Ответ выдается всегда, не-
зависимо от режима работы.
NO CARRIER (3)- Модем потерял несущую
или не получил ответ от удаленного модема.
ERROR (4)- Ошибка в командной строке.
Командная строка длиннее 40 символов, или
ошибка в контрольной сумме (смотри команду
L2).
CONNECT 1200 (5)- Модем подключен со
скоростью 1200 bps, (смотри команды X1,
X2, X3, X4).
NO DIALTONE (6)- Отсутствие сигнала
станции коммутации (смотри комманды X2,
X4).
BUSY (7)- Номер (канал) занят.
NO ANSWER (8)- Ответ получается в слу-
чае использования в командной строке упра-
вляющего символа @ и если не выполнено ус-
ловие - 5s тишины (см команду D).
CONNECT 600 (9)- Модем подключен со
скоростью 600 bps, (смотри команды X1, X2,
X3, X4).
CONNECT 2400 (10)- Модем подключен со
скоростью 2400 bps, (смотри команды X1,
X2, X3, X4).
Примечание: в скобках указаны коды ци-
фровых ответов.
Xn - выбор групп ответов модема свя-
занных с процедурой набора номера:
X0 X1 X2 X3 X4
Сообщение о связи 1 2 2 2 2
Опоздание (S6 s) да да нет да нет
Ожидание сигнала
коммутатора нет нет да нет да
Определение сигнала
"занято" номера нет нет нет да да
Сообщение о связи 1 - обозначает, что
модем после установления связи сообщит CO-
NNECT, независимо от скорости работы.
Сообщение о связи 2 - обозначает, что
модем после установления связи сообщит
следующий ответ в зависимости от скорости
работы: CONNECT, CONNECT 600, CONNECT 1200
CONNECT 2400.
Ответ CONNECT обозначает работу со
скоростью передачи данных - 300 bps.
Опоздание (S6 s) - обозначает, что мо-
дем перед набором телефонного номера, ожи-
дает определенное в S-регистре S6 время.
Во многих странах существует требова-
ние определения сигнала централи перед на-
бором телефонного номера.
Ожидание сигнала - обозначает, что мо-
дем будет ожидать сигнала коммутатора ста-
нции 5s и по истечении этого времени вы-
даст сообщение NO DIALTONE и перейдет в
командный режим работы.
Определение сигнала - обозначает, что
модем в случае занятости "занято" номера
вызываемого номера, вадаст сообщение BUSY,
и возвратится в командный режим работы.
Yn - способ отключения модема от ли-
нии. Существуют два способа отключения мо-
дема от линии:
- обыкновенный, когда модем получит
неактивный сигнал DTR,
- когда модем получит от удаленного
модема сигнал перерыва
Команда ATH0 направляет сигнал перерыва,
который длится 4 s.
n = 0 модем отключается обыкновенно
(см. команду &D),
n = 1 модем отключается после получе-
ния сигнала из линии.
Z - обнуление модема (процессор считы-
вает конфигурацию модема из памяти NOV-
RAM).
+++ - последовательность выхода. Бла-
годаря этой команде можно перейти из режи-
ма передачи в командный режим работы моде-
ма без перерыва связи. Команда требует ти-
шины перед и после направления последова-
тельности выхода. Величина этого времени
определена в регистре S12 ( обычно 50 = 1s
). Десятичную величину знака ASCII, кото-
рый явдяется знаком последовательности вы-
хода содержит регистр S2 ( обычно 43 те.
'+' ).
1.3 Дополнительный набор команд Hayes'a
&Cn - функция сигнала DCD.
n = 0 сигнал DCD всегда активен,
n = 1 сигнал DCD существует с момента,
когда модем определит несущую.
&Dn - функция сигнала DTR в асинхрон-
ном режиме работы.
n = 0 модем игнорирует DTR,
n = 1 с момента потери DTR модем пере-
ходит в командный режим работы,
n = 2 с момента потери DTR модем прек-
ращает связь, выключает функцию "auto-ans-
wer" и переходит в командный режим работы,
n = 3 с момента потери DTR модем авто-
матически реализует команду ATZ. Модем об-
наруживает потерю DTR если сигнал DTR дли-
тся дольше времени определенного в S-реги-
стре S25.
&F - модем считывает свою конфигурацию
записанную в EPROM.
&Gn - включение / выключение защитной
частоты.
n = 0 защитная частота выключена,
n = 1 модем высылает защитную частоту
550 Hz,
n = 2 модем высылает защитную частоту
1800 Hz.
&Ln - вид линии связи.
n = 0 передача на коммутируемых линиях
связи,
n = 1 передача на постоянных линиях
связи.
&Mn - режим работы.
n = 0 асинхронный,
n = 1 для терминалов, которые могут
работать как в синхронном, так и в асинх-
ронном режиме работы; команду набора номе-
ра модем передает асинхронно, а передачу
данных - синхронно,
n = 2 с момента появления сигнала DTR,
модем набирает номер записанный командой
&Z в памяти NOVRAM,
n = 3 при неактивном сигнале DTR
производится ручой набор номера. После по-
лучения соединения, с момента поступления
сигнала DTR модем подключается к линии.
&Pn - установка импульсного коэффи-
циента.
n = 0 коэффициент заполнения замыка-
ние/интервал 39/61%,
n = 1 коэффициент заполнения замыка-
ние/интервал 33/67%.
&Rn - управление зависимостей RTS/CTS:
n = 0 сигнал CTS наступает после сиг-
нала RTS
Такой вариант проявляется во время мо-
делирования полудуплексного режима работы.
Данные появляющиеся до поступления сигнала
CTS игнорируются.
n = 1 модем игнорирует RTS, при актив-
ном CTS сразу после подключения модема. Во
время асинхронной передачи данных (команда
&M0) сигнал CTS всегда активен.
&Sn - функции сигнала DSR:
n = 0 сигнал DSR активен,
n = 1 DSR активизируется, после окон-
чания этапа установления связи.
&Tn - тесты модема.
n = 0 окончание текущего теста,
n = 1 начало местной аналоговой петли,
n = 2 не используется,
n = 3 начало местной цифровой петли,
n = 4 модем дает согласие начала циф-
ровой петли, которую передает
удаленный модем,
n = 5 модем не дает внешнему устройст-
ву согласия,
n = 6 начало дистанционной цифровой
петли,
n = 7 модем генерирует петлю RDL, а
затем генерирует и передает
тестирующий сигнал,
n = 8 аналоговая петля связанная с
внутренним тестом.
&W - модем читает свою конфигурацию из
памяти RAM и записывает ее в память NOV-
RAM. Доступ к S-регистрам в памяти NOVRAM.
&X - выбор опорного времени для пере-
дачи.
n = 0 модем генерирует основу времени
сигнал таймера 114 (15-ый штырек),
n = 1 модем получает основу времени
для передачи из компьютера : сигнал тайме-
ра 113 (14-ый штырек),
n = 2 модем получает основу времени
для передачи из линии, от несущей.
&Z - запись телефонного номера в памя-
ти NOVRAM, (максимум 33 знака).
2.0 Описание S-регистров.
Дается описание S-регистров непос-
редственно используемых при работе с моде-
мом.
Для описания отдельных S-регистров
указано два параметра:
- диапазон - обозначает диапазон пара-
метров сохраняемых в S-регистре.
- величина - обозначает заводскую ве-
личину параметра, записанную в S-регистре
фирмой изготовителем.
S0 - Количество сигналов звонка
Диапазон : 0 - 255
Величина : 000
Количество сигналов звонка, которого
ждет модем перед ответом на вызов телефон-
ной линии:
S0 = 0 автоответ выключен
S0 > 0 автоответ включен
S1 - Счетчик сигналов звонка (информа-
ционный параметр)
Диапазон : 0 - 255
Величина : -----Содержимое S-регистра
увеличивается каждый раз, когда модем по-
лучает сигнал звонка из телефонной линии и
по истечении 8s после сигнала ответа сбра-
сывается.
Этот регистр - единственный, исполняю-
щий чисто информационную роль, его содер-
жимое можно только читать.
S2 - Символ возврата
Диапазон : 0 - 255
Величина : 043 (ASCII '+')
Содержит десятичный код символа ASCII,
который является знаком последовательности
возврата /смотри '+++'/.
В случае, когда S2 > 127 происходит
блокировка последовательности возврата.
S3 - Символ <CR>
Диапазон : 0 - 127
Величина : 013 (ASCII '<CR>' или Ctrl-
M (^M))
Содержит десятичный код символа ASCII,
который является знаком <CR>.
S4 - Символ <LF>
Диапазон : 0 - 127
Величина : 010 (ASCII '<LF>' или Ctrl-
J (^J))
Содержит десятичный код символа ASCII,
который является знаком новой строки <LF>.
S5 - Символ <BS>
Диапазон : 0 - 32, 127
Величина : 008 (ASCII '<BS>' или Ctrl-
H (^H))
Содержит десятичный код символа ASCII,
который является знаком "забой" (backspa-
se) <BS>.
S6 - Время ожидания заявления станции
Диапазон : 2 - 255
Величина : 002 s
S7 - Ожидание сигнала несущей
Диапазон : 1 - 155
Величина : 030 s
S8 - Время интервала при наборе
Диапазон : 0 - 255
Величина : 002 s
S9 - Время реакции DCD
Диапазон : 0 - 255
Величина : 005 ( x1/10s = 0, 6s )
Время задержки активизации сигнала DCD
вследствие появления несущей.
S10 - Задержка разъединения после по-
тери несущей
Диапазон : 1 - 255
Величина : 014 ( x1/10s = 1, 4s )
S11 - Не используется
S12 - Время требуемой тишины для пос-
ледовательности возврата
Диапазон : 20 - 255
Величина : 050 ( x 20ms = 1, 0ms )
Содержимое регистра определяет в 1/50s
время требуемой тишины в передаче перед и
после последовательности возврата (смотри
'+++').
S13 - Не используется