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

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

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

Игровой адаптер имеет восемь входных линий, четыре из которых являются цифровыми входами, а четыре входами сопротивления. Эти входы могут быть прочитаны командой 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

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

game port игровой порт

Кнопки включаются между соответствующим контактом разъема и общим проводом. Переменные резисторы для ввода координат имеют номинал 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 мс и могут вызвать проблему потери или большой задержки прерывания.

Leave a Reply

Your email address will not be published. Required fields are marked *