Работа с игровым портом

 

 

 

 

 

                           

  Игровой адаптер допускает подключение к системе двух джойстиков. Интерфейсный кабель игрового адаптера присоединяется в задней части адаптера. Кроме того, обеспечивается четыре входа для подключения переключателей. Положение ручки или джойстика определяется изменением величины сопротивления,передающегося на адаптер. Адаптер вместе с системным программным обеспечением преобразует имеющуюся величину сопротивления в относительное положение ручки или джойстика. При получении выходного сигнала, начинают работать четыре временные схемы. Положение сопротивлений может быть определено путем измерения величины тайм-аута схемы (которая является функцией сопротивления). Этот адаптер может быть использован как схема ввода/вывода общего назначения с четырьмя аналоговыми (резистивными) входами и четырьмя цифровыми входными сигналами.

Описание интерфейса

  Игровой адаптер имеет восемь входных линий, четыре из которых являются цифровыми входами, а четыре входами сопротивления. Эти входы могут быть прочитаны командой IN по адресу 201H. Каждый из четырех цифровых входов имеет резистор на +5В величиной 1кОм. Если на эти входы ничего не подается, то на них присутствует 1. Для того чтобы прочитать 0, эти входы должны быть зашунтированы на общий вывод. Четыре аналоговых входа подключаются через переменные резисторы на +5 В и будут преобразованы в длительность пропорционально величине резисторов, в соответствии со следующим соотношением:

Тime = 24.2+ 0.011*R (мксек)

  Пользователь должен сначала начать диалог, выдавая команду OUT по адресу 201H. Команда IN по адресу 201H позволяет проследить, что выходы одновибраторов перешли в состояние 1 и остаются в этом состоянии в течение времени, соответствующего величине сопротивлений. Назначение всех четырех битов (0-3) одинаково,они всегда одновременно переходят в 1 и сбрасываются независимо друг от друга, в соответствии с величиной сопротивления на входе. Распределение входных сигналов по битам порта приведено в таблице:

Бит7Бит6Бит5Бит4Бит3Бит2Бит1Бит0
Кнопка B2Кнопка В1Кнопка А2Кнопка А1Координата BY Координата BXКоордината AYКоордината AX

Распределение сигналов по контактам разъема порта приведено на рисунке :

  Кнопки включаются между соответствующим контактом разъема и общим проводом. Переменные резисторы для ввода координат имеют номинал 100 кОм и включаются между соответствующим контактом и цепью +5В

Программирование игрового адаптера

Функции BIOS
INT 15 - BIOS -  Поддержка джойстика
        AH = 84h
        DX = подфункция
            0000h Читать положение кнопок джойстика
                Возвращает: AL биты 7-4 = положение кнопок
            0001h Читать позицию рукояток джойстиков
                Возвращает: AX = X координата джойстика A
                        BX = Y координата джойстика A
                        CX = X координата джойстика B
                        DX = Y координата джойстика B
Если установлен флаг CF - произошла ошибка
            AH = статус
                80h неверная команда (PC,PCjr)
                86h функция не поддерживается
        CF=0 если успешно выполнено
З  амечание: Если порт джойстика не установлен или нет джойстика, подфункция 0000h вернет AL=00h (все кнопки разомкнуты) и подфункция 0001h вернет AX=BX=CX=DX=0000h. Джойстик с резисторами 250kOhm возвращает значения в пределах 0000h-01A0h.

  Функции BIOS, читая положения джойстика, блокирует прерывания для более чем на 1 мс и могут вызвать проблему потери или большой задержки прерывания.

 

Сайт создан в системе uCoz