ZX-News
#26
03 апреля 1997 |
|
Железо - Описание XTR-модема.
----- ЖЕЛЕЗО ----- Изначально мы планировали усовершенство- вать VICOMM и сделать его максимально де- шевым. Увы, полумеры ни к чему не привели, изначальная ущербность VICOMMа не позволи- ла реализовать все задумки, а именно: воз- можность автоматического (без кнопки) за- нятия линии, контроля звонка и занятости линии. Все это дает невиданные ранее воз- можности, как-то: импульсный и тональный набор номера, возможность автодозвона, оп- ределение номера, набираемого с параллель- ного телефона, автоматическое определение номера звонящего абонента (АОН), а в режи- ме модема улучшеный сервис и повышеное ка- чество приема/передачи. Я не даром делаю упор на побочную функ- цию модема - АОН, т.к. считаю АОН безус- ловно полезной и нужной функцией в модеме. Посему программная совместимость с VI- COMMом была утрачена, но не полностью. При общении в сети процесс выглядит сле- дующим образом: вы включаете машину, заг- ружаете программу, выключаете монитор, отключаете телефоны, чтобы не звенели, и ложитесь спать. А поутру, за чашкой чая и тарелкой манной каши, вы листаете набежав- шие сообщения. Модем стал внутренним (это удешевляет конструкцию) - он втыкается в слот SCORPI- ON/KAY и его подключение не сопровождается разогревом паяльника. Подключение к другим SPECTRUM-совместимым машинам сопроводится включением паяльника и применением оного согласно инструкции. Модем имеет гальваническую развязку с линией (пробивное напряжение 1.5 Kv). Раз- вязка сделана посредством оптронов, а не трансформатора, как в VICOMMе, что опять- таки удешевляет конструкцию и снижает ее габариты. Соблюдены все стандарты на оконечное устройство телефонной сети (максимальная утечка 250 мкА, максимальное напряжение - 220 В, максимальный ток - 100 мА). Когда компьютер выключен, когда модемом не пользуются, а так же по нажатию RESET, модем отключается от линии и не оказывает на нее никакого влияния. Сигнальная часть модема имеет частотную полосу на передачу более 20 Кгц, на при- ем - более 10 Кгц, что более чем достаточ- но для обмена на 3200 бод (если линия и станция позволят). Максимальная испытанная скорость - 3900 бод, результаты обнадежи- вают. Немаловажная деталь: реализована аппа- ратная поддержка обмена с модемом в лице стробирования процесса выбираемой кварцо- ванной частотой посредством сигнала WAIT. Идея такая - программа написана под такто- вую частоту CPU SPECCY не ниже, скажем, 3.2 Мгц, а все машины с большей частотой подтормаживаются до нужной. К сожалению, есть ограничение - не более 7.0 Мгц (типо- вой ТУРБО-режим). Это очень удобно - качество связи не за- висит от времянки машины и не надо пользо- ваться кнопкой ТУРБО, все и так работает, включая CONNECT SCORPION-PENTAGON. Возможна передача в линию аналогого сиг- нала с квантованием по 16-ти уровням пос- редством ШИМ-модуляции с частотой дискре- тизации до 23 Кгц (голосовые возможности АОН РУСЬ-16 и выше, а также DIGITAL STU- DIO ). Конструктивно усройство представляет со- бой печатную плату размером 75*70 мм и со- держит разъем в виде слота SCORPION/KAY и разъема телефонной линии. Потребление тока от источника питания SPECCY около 100 мА. +12 В не требуется. ----- SOFT ----- Пока модем в производстве, мы адаптируем существующие терминальные программы, а так же пишем новые. Уже переделан MODEM 3.6 и написана программа АОН. Переделаный MODEM 3.6 может быть исполь- зован для связи XTR-VICOMM. Данный проект поддержан OMEGA GROUP и программа Macro-Modem будет адаптирована под XTR. Мы уверены, что XTR полностью вытеснит все VICOMMы и станет стандартом на плат- форме ZX-SPECTRUM. ----- ПОЖЕЛАНИЯ ----- Мы знаем, что на сегодня, кроме Питера и Москвы, нигде модемов нет и в помине. А посему предлагаем - попробуйте сей продукт и в вашем регионе, вы не пожалеете. ----- ПРОГРАММИРОВАНИЕ ----- Для любопытных пользователей сообщаем необходимый минимум информации. Общение с модемом происходит через единственный порт с адресом #B7 (183). IN A,(#B7), если линия не занята модемом Bit7 Bit0 0 0 линия не подключена к модему 0 1 снята трубка паралл. аппарата 1 0 звонок ( возможны глюки ) 1 1 линия свободна IN A,(#B7), если линия занята модемом Bit7 всегда 0 Bit0 через него идут принимаемые данные OUT (#B7),A Bit0 при занятой линии - передаваемые данные, при приеме д.б. =1 при освобожденной линии неактуален Bit1 1-занять линию 0-освободить линию Bit4 биты определяют время, до которого Bit5 аппаратно растянется интервал вре- Bit7 мени между двумя соседними коман- Bit6 дами IN A,(#B7) или OUT (#B7),A Bit7-Bit4 #00 время .000002*16 сек #10 время .000002*15 сек ... #E0 время .000002*1 сек #F0 асинхронный режим, NO WAIT Для случая #F0 ничего не растягивается, все выполняется, как для порта #FE в режи- ме эмуляции VICOMM. Для чего нужны биты 7-4? пример: LD A,#?0 * OUT (#B7),A * IN A,(#B7) ! POP AF IN A,(#B7) ! без аппаратной поддежки для команд, отме- ченых знаком !, период выполненя составит: тактов секунд PENTAGON 11+10=21 .000006 TURBO PENTAGON 11+10=21* .000004 ! SCORPION 12+10=22 .0000063 TURBO SCORPION 12+10=22* .000004 ! KAY 12+10=22 .0000063 TURBO KAY 12+12=24 .0000034 * плюсуется WAIT ! приблизително Для случая XTR период для всех машин уравнивается, увеличиваясь (!) до значе- ния, установленого в битах 7-4 (кроме зна- чения #F0). То же спрведливо для OUT (#B7),A и для любых комбинаций IN/OUT с портом #B7. Примечание_1: естественно, программа долж- на быть писана под худшую машину, чтобы время исполнения команд на этой машине бы- ло меньше, чем установленое время, до ко- торого все растягивается (иначе это будет сжатие!). примечание_2: период без растягивания не должен быть менее .00000229 сек, (8 тактов неTURBO PENTAGONа, 16 тактов TURBO PENTA- GONа), иначе растягивания не произойдет. Пример паузы в .002 секунды: W002 XOR A OUT (#B7),A ; период 32 мкС LD B,62 W002_1 IN A,(#B7) ; 62*.000032=.001984 DJNZ W002_1 ... На любой машине это будет .002 сек, не- зависимо от TURBO/неTURBO. Примеры программирования: освободить линию OUT (#B7),#F0 занять линию OUT (#B7),#F3 Набор номера (WAIT ... в секундах): ADRNUM DB "1234567" DIAL OUT (#B7),#00 ; сброс линии WAIT 0.5 OUT (#B7),#02 ; занять линию LD HL,ADRNUM LD C,7 DIAL7 WAIT 0.5 LD A,(HL) SUB #30 JR NZ,DIAL7_0 LD A,10 ; для нуля-десять DIAL7_0 LD B,A INC HL PUSH HL PUSH BC CALL DIALN ; набор цифры POP BC POP HL DEC C JR NZ,DIAL7 WAIT 0.5 OUT (#B7),#03 RET DIALN OUT (#B7),#00 WAIT .06 OUT (#B7),#02 WAIT .04 DJNZ DIALN1 RET Передача данных (принцип VICOMM): OUT (#B7),#F2 WAIT OUT (#B7),#F3 WAIT повторять по алгоритму Ожидание звонка: WTCALL LD DE,#8180 XOR A OUT (#B7),A WTCL0 LD BC,#FF00 WTCL1 WAIT .002 IN A,(#B7) AND D CP E JR NZ,WTCL2 INC C WTCL2 DJNZ WTCL1 LD A,C CP 30 ; антиглюк JR C,WTCL0 ; нет звонка WTCL3 LD B,0 ; ожидаем конец WTCL4 WAIT .002 ; звонка IN A,(#B7) AND D CP E JR Z,WTCL3 DJNZ WTCL4 ; можно занимать линию RET ! не рекомендуется занимать линию в мо- мент звонка (как-никак 120 вольт !!!), нужно дождаться паузы между звонками (ска- занное справедливо для любого оконечного устройства телефонной линии). __________________________ ────────────────────
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября