Давайте сделаем модем!
В 1990 году Дмитрий, программист и элетроник, Виктор, предприниматель и финансис, поддерживали мои “горячие, фанатические” глаза начать разработку систем обмена данныи по телефонным сетям.
-
Сейчас много домашних компьютеров. Можно сделать модем и начать продавать. Предлагаю сделать настоящий Hayes-modem.
-
Точно есть спрос на модемы?
Будущие партнёры и члены бригады сомневались в выгодности этой затеи.
В этот момент накопил хороший опыт программиста на языке ассемблера микроконтроллеров i8035, i8048.
Именно на этом семействе и решили воплотить идею создать совместимый Hayes-modem с частотной модкляцией стандарта V.21/v.23.
Теория и практика
Пришлось искать крохи информации по компьютерным модемам. Старался найти все доступные книги по коммуникации телефонной, модемам, стандартам, аппаратным решениям.
Дмитрий стал создавать цифровую плату, которая должна поддерживать Hayes-команды модема V.21/v.23 и телефонный интерфейс.
Мне досталась задача создать плату и алгоритмы частотной модуляции и демодуляции; использовать аналоговые фильтры на операционных усилителях высокого порядка.
Процессор i8035 был очень слабый. В этот исторический момент страны советов это был самый доступный и по цене и доставаемости микроконтроллер.
Реализация
Через полтора года нам удалось выпустить первую опытную партию Hayes-модем V.21/v.23. Мы опоздали! На советский рынок стали появляться зарубежные фирмы и поток компьютерной техники, в том числе современных модемов.
Ссылка на описание проекта и пример программы демодулятора микроконтроллера i8035
https://github.com/askfind/retro_modem_i8035
╔═════════════════════════════════════════════════════╗
║ Реализация HAYES-системы команд для модема V.23 ║
╚═════════════════════════════════════════════════════╝
Ниже приведены реализованные команды. Команды должны состоять
из заглавных букв латинского алфавита. Все команды (кроме A/)
должны содержать в начале префикс AT который служит для обозна-
чения начала новой командной строки. Командная строка должна
заканчиваться кодом <CR>. В командной строке может подаваться
как одна, так и несколько комманд. Все пробелы в командной строке
игнорируются. Если в командной строке встречается символ <BS>, то
предыдущий символ считается недействительным и игнорируется.
Длина командной строки не должна превышать 90 символов.
A/ Команда модему повторить предыдущую командную строку.
Подается как есть без префикса AT и окончания строки <CR>.
En Управление эхом модема. После команды E1 модем возвращает каждый
символ передаваемый ему по интерфейсу RS-232c в виде локального
эха. E0 - блокировка локального эха.
n=0 эхо выключено
n=1 эхо включено
n<>0 or 1 любой другой символ вызывает ошибку.
Qn Управление ответом модема. После получения команды Q0 модем дает
ответ на полученную командную строку OK, в случае успешного выпол-
нения, и ERROR в случае ошибки. После команды Q1 модем никаких
ответов по завершении команды не дает.
n=0 ответ включен
n=1 ответ выключен
n<>0 or 1 любой другой символ вызывает ошибку.
Vn Выбор вида ответа модема.
n=0 ответ цифровым кодом
n=1 ответ в символьном виде на английском языке
n<>0 or 1 любой другой символ вызывает ошибку.
Z Восстановление начальных значений S-регистров из ППЗУ и установка
тех режимов, которые были после включения питания модема.
Srrr?
Считывание содержимого S-регистра номер rrr. Номер задается деся-
тичным числом и не должен превышать 255. Номер может задаваться
без нулей слева либо с нулями, при этом общее число символов не
должно превышать трех. В ответ на эту команду выдается три ASCII
символа, которые представляют собой содержимое S-регистра в десяти-
чном виде.