{ JOYSTICK.PAS }{ Unit v ktorom je vsetko co potrebujete pre pracu s joystickom. }{ }{ Datum:03.08.1997 http://www.trsek.com }unit joystick;interfaceprocedure ReadJoyA(var XAxis,YAxis :word);{ kde sa nachadza A }procedure ReadJoyB(var XAxis,YAxis :word);{ kde sa nachadza B }function ButtonA1 :boolean;{ stlacene tlacitko 1 }function ButtonA2 :boolean;{ stlacene tlacitko 2 }function ButtonB1 :boolean;{ stlacene tlacitko 3 }function ButtonB2 :boolean;{ stlacene tlacitko 4 }function JoystickPressent :boolean;{ Existuje joystick }implementationuses Dos;type ReadJoyProc =procedure( a,b :byte;var c,d:word);
ButtonFunc =function( a:byte):boolean;var ReadJoy : ReadJoyProc;
Button : ButtonFunc;
Reg : Registers;function NewBIOS :boolean;var DecadeChar :charabsolute$f000:$fffb;
YearChar :charabsolute$f000:$fffc;begin{ an optimistic view of software life }
NewBIOS:=(DecadeChar in['9','0'])or((DecadeChar='8')and(YearChar in['4'..'9']));end;{$F+}procedure OldReadJoy( xbit,ybit:byte;var XAxis,YAxis:word);begininline($ba/$01/$02/{ mov dx,201h ;load dx with joystick port adress }$c4/$be/>XAxis/{ les di,XAxis[bp] ;load es with segment and di w/offset }$8a/$66/<xbit/{ mov ah,xbit[bp] ;set appropriate bit in ah }$e8/$0c/$00/{ call SUBR }$c4/$be/>YAxis/{ les di,YAxis[bp] }$8a/$66/<ybit/{ mov ah,ybit[bp] ;set appropriate bit in ah }$e8/$02/$00/{ call SUBR }$eb/$1d/{ jump short END ;we're don }{ SUBR: ;first wait, if necessary, until }{ ;relevant bit is 0: }$b9/$ff/$ff/{ mov cx,0ffffh ;fill cx to the brim }$ec/{ WAIT: in al,dx ;get input from port 201h }$84/$e0/{ test al,ah ;is the relevant bit 0 yet? }$e0/$fb/{ loopne WAIT ;if not, go back to wait }$b9/$ff/$ff/{ mov cx,0ffffh ;fill cx to the brim again }$fa/{ cli ;disable interrupts }$ee/{ out dx,al ;nudge port 201h }$ec/{ AGAIN: in al,dx ;get input from port 201h }$84/$e0/{ test al,ah ;is the relevant bit 0 yet? }$e0/$fb/{ loopne again ;if not, go back to AGAIN }$fb/{ sti ;reenable interrupts }$f7/$d9/{ neg cx ;negative cx }$81/$c1/$ff/$ff/{ add cx,0ffffh ;add offffh back value in cx }$26/{ es: ;segment override }$89/$0d/{ mov [di],cx ;store value of cx in location }{ ;of relevant variable }$c3);{ ret }end;{ OldReadJoy }procedure NewReadJoy ( which, meaningless:byte;var XAxis,YAxis:word);begin
Reg.ah:=$84;
Reg.dx:=1;
intr($15,Reg);if(which=1)thenbegin
XAxis:=Reg.ax;
YAxis:=Reg.bx;endelsebegin
XAxis:=Reg.cx;
YAxis:=Reg.dx;end;end;function OldButton (mask:byte):boolean;begin
OldButton:=((port[$201]and mask)=0);end;function NewButton(mask:byte):boolean;begin
Reg.ah:=$84;
Reg.dx:=0;
intr($15,reg);
NewButton:=((Reg.aland mask)=0);end;{$F-}procedure ReadJoyA(var XAxis,YAxis:word);begin
ReadJoy(1,2,XAxis,YAxis);end;procedure ReadJoyB(var XAxis,YAxis:word);begin
ReadJoy(4,8,XAxis,YAxis);end;function ButtonA1 :boolean;begin
ButtonA1:=button($10);end;function ButtonA2 :boolean;begin
ButtonA2:=button($20);end;function ButtonB1 :boolean;begin
ButtonB1:=button($40);end;function ButtonB2 :boolean;begin
ButtonB2:=button($80);end;function JoystickPressent :boolean;begin
intr($11,Reg);
JoystickPressent:=((Reg.axand$1000) <> 0);end;beginif NewBIOS thenbegin{ pouzi novu rutinu pre BIOS }
ReadJoy:=NewReadJoy;
Button:=NewButton;endelsebegin{ inac stara rutina }
ReadJoy:=OldReadJoy;
Button:=OldButton;end;end.
Настройка DosBox Пересмотрела множество страниц по настройке DosBox, но у меня все равно не получается. Я запуталась к тому же. Кто может мне помочь,...
Настройка IIS нужны FAQ или документации немогу настроить IIS. как сделать чтобы у клиентов не спрашивал пароль. Клиенты выходят на мой сервер по моему IP, а как сделать чтобы...
Настройка видео кодеков в QT Добрый день. Для проигрывания видео (чтения с камеры) использую QMediaPlayer. В теме https://www.cyberforum.ru/qt/thread2982937.html я...
Настройка внутрисетевой видео трансляции Здравствуйте коллеги! У нас на предприятии появилась потребность выводить видео с устройств видео захвата на множество компьютеров....
Настройка на отдельность работы , видео и игры Подключил ПК к ТВ , теперь в одной стороне идёт видео в другой рабочий стол , но вот когда запускаю видеоигру , видео останавливаеться и...
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .