Из газеты 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 - Не используется