Как читают телефонные карты, или научись цеплять к своему компу девайсы
Спецвыпуск Xakep, номер #011, стр. 011-088-2
Настройка порта
Перед тем как программировать порт, его надо настроить. В BIOS setup есть пункт - integrated peripherals (встроенные периферийные устройства), или похожий, где указывается адрес и режим работы параллельного порта. Поставь адрес 378h и режим EPP или ECP.
Питание
Лучше всего будет запитать карту от блока питания компа. В отличие от адаптеров, он, как правило, неплохо стабилизирован. Отлично, если блок питания отдельный и не стоит в компе. Если он все-таки в компе, из которого уже валит дым, значит ты что-то сделал не так, и питание замкнуло. Покупай новый комп и в следующий раз будь аккуратнее :).
Блок питания твоей персоналки бывает двух типов: ATX и AT. Они много чем отличаются, но главное вот что. Если разъем питания для матплаты состоит из половинок - значит, блок AT, и все пучком. Если разъем этот один - значит, блок ATX, и, чтобы завестись, он хочет получить от матплаты подтверждение ее наличия. Чтобы он все-таки работал без матплаты, надо замкнуть ногу 14 (она обычно зеленого цвета) на землю (черного цвета).
Из блока питания идет куча хвостиков с четырьмя контактами на конце. Если повернуть такой хвостик к себе и фасками на ребрах вниз, слева будет красный провод - это +5В, потом два черных провода - земля, и справа желтый - это +12В. Для питания карты нам нужно как раз 5 вольт.
Стандарты
Чтобы карты были совместимы с телефонными автоматами, большие умные дяди прописали для них единый стандарт: ISO 7816-2. В стандартах обычно подробно описано, что нужно сделать для чтения, записи, обнуления, и другие подробности работы карты. Запомни: стандарты - это как раз то, что нам ВСЕГДА нужно. И начинать надо именно с изучения стандартов.
Сначала - по-русски. Есть два управляющих проводка: CLK и Reset - ими мы устанавливаем карту в нужный режим (обнуление, чтение, запись). Чтобы подробнее изучить, как это происходит, надо серьезно заморачиваться. Еще есть проводок I/O, через этот проводок карточка нам отвечает.
А теперь сам стандарт. То есть это, ясное дело, не весь стандарт, а только маленький кусочек, к тому же мы перевели его на русский. Можно понять что происходит и по описанию, но лучше смотреть на диаграммы.
Счетчик адреса сбрасывается в 0, когда сигнал таймера CLK переходит из НИЗКОГО уровня в ВЫСОКИЙ, если линия Reset имеет ВЫСОКИЙ уровень сигнала.
Заметь, что счетчик адреса не может быть сброшен, если он в диапазоне от 0 до 7.
XXXXВерстальщику: вставить скриншот ХХХХ
smart_13.ai
Сброс счетчика адреса карты в 0
XXXX
Счетчик адреса увеличивается на 1 с каждым переходом сигнала CLK из НИЗКОГО уровня в ВЫСОКИЙ столько, сколько уровень линии Reset остается НИЗКИМ. Данные, содержащиеся в каждом адресованном бите, выводятся на контакт I/O каждый раз, когда уровень CLK падает. Уменьшить значение счетчика адреса можно следующим образом: сбросить счетчик адреса в 0 и увеличить его до нужного значения.
Программируем
Эта главка для тех, кто решил заморочиться не по-детски. Проще, конечно, качнуть нашу или похожую прогу из инета, но если ты хочешь подробнее разобраться в том что происходит - разбирайся. Мы тебе поможем. Для этого здесь собраны кусочки проги РадиоМастера.