  Ŀ
  Ŀ
                                                                          
                  Yuvarlak Ke  "Joystick"                              
                                                                          
  ٳ
   PS 23  Haziran'95                                     Alex G. Pamir     
  




> Herkese Merhaba...

  Bu ay MOD dosyas formatndan bahsedeceimi sylemitim fakat bir ay ara
  verdiimiz iin geen ayn konusu oldu. Bu arada o konuyla ilgili yeni baz
  bilgiler de buldum. Toparladm zaman size daha geni olarak sunacam.
  Uzun lfn ksas bu ay deiik bir konudan bahsedeceim.

  Hatrlarsanz yine eski yazlarmdan birinde dizinin ortasna birdenbire
  fare atlamt. Bu sefer de farenin en iyi arkada olan Joystick (yani oyun
  kolu) bir anda araya dalverdi...
  "Fareyi anlattn, beni de anlatmazsan olmaz" dedi. Ben de onu kramadm ve
  bu ay size Joystick'den bahsetmeye karar verdim.




                                   JOYSTICK
                                  

 Joystick, giri olanaklari kstl olan PC'mizin deiik tepkileri
  ileyebilmesi iin eklenen bir ek cihazdr. lk balarda sadece klavyeyle
  snrl olan bilgisayarlarn ehresinde Joystick, arkada fareyle beraber
  en byk rol oynamtr. Fare cinsi bir gsterge (pointing device) olan
  Joystick'in, biz programclara salad en byk imkan, dardan alnan
  kordinat ve dme bilgileri dnda (bunlar farede de var) hz bilgisi de
  vermesi. Ayrca Joystick'in dizaynndan kaynaklanan avantajlar da
  bulunmaktadr. Aslnda fareden de hz bilgileri alabiliriz ama, fare nazik
  bir hayvan (pardon cihaz) olduundan iddetli ve hoyrat kullanma
  dayanamayarak bozulabilir.

  Fakat joystick yaps gerei sert darbelere kar dayankldr. Bu yzden
  genelde ani tepkiler gerektiren uygulamalarda kullanlr. Bunlara en iyi
  rnek de araba yar veya dv tr bilgisayar oyunlardr.

 Joystickler bilgileri kendi iinde ilemeleri bakmndan ikiye ayrlrlar:
  Dijital ve analog.

  Dijital joysticklerde, sadece yn ve dme bilgileri alnabilir. Bu tr
  joystickler farelerden daha nce kevedilmi, eski oyun konsollar ve
  bilgisayarlarnda kullanlmtr.

  Analog joystickler ise, PC'lerle beraber geni olarak kullanlmaya balam
  ve halen kullanlmaktadr.

  Bu yzden eer joysticklerle ile ilgili bir uygulama yapmay planlyorsanz
  kullanacanz joystickin trne dikkat edin.


  Analog Joystic'kler
  
  imdi de gelelim Analog PC Joysticklerinin kullanmna. Analog PC
  Joystickleri, Game Port ad verilen girie taklarak kullanlr. Bu Port, ya
  PC'nin I/O kart zerinde bulunur, ya da Game Card denilen ek bir kart
  taklarak elde edilir. Bu port'un adresi 201h'dir.

  Bu porttan okunan bir byte'da karta takl olan veya olmayan maximum 2
  joystick hakknda tm bilgiler bulunur.

  emayla gsterirsek:


                      Ŀ
                       7  6  5  4  3  2  1  0 
                      
                                             
Joystick B,  Dme 2                       Joystick A, X Ekseni
Joystick B,  Dme 1                 Joystick A, Y Ekseni
Joystick A,  Dme 2           Joystick B, X Ekseni
Joystick A,  Dme 1     Joystick B, Y Ekseni


 Bir programda Joystick'i kullanmann iki yolu vardr. Kolay olan, Joystick
  hakkndaki bilgileri dndren BIOS kesmesini kullanmaktr. Dieri ise portu
  kendimiz okuyup, bilgileri kendimiz hesaplamamzdr.

  Joystick kesmesinin tarifi yle:

         Int 15 , Fonksiyon 84h

         Gnderilen :
               AH=84h
               DX=00h Dmeleri okumak iin
                  01h Joystick pozisyonunu almak iin

         Geri dnen :
               DX=00h iin
                      AL'nin 4-7 bitlerinde dmelerin baslma durumu
                                                       (0 basl, 1 deil)
                      Hata varsa elde bayra (Carry Flag) 1 olur
               DX=01h iin
                      AX= Joystick A X kordinat
                      BX= Joystick A Y kordinat
                      CX= Joystick B X kordinat
                      DX= Joystick B Y kordinat


 Bu kesme, kesmeleri desteyleyen herhangi bir dilde kullanlp Joystick
  durumu kontrol edilebilir.

  Joystick bilgilerini okumak iin ikinci yol ise daha karmaktr. Dikkat
  edilirse Joystick Portunda eksenler iin sadece 1'er bit
  ayrlmtr. Bu tek bit kullanarak kordinat elde etmek ise yle yaplr:
  nce porta herahngi bir byte yazlr. Bu byte yazlnca tm eksen bitleri
  1 olur.

  Bundan sonra da dng iinde porta baklr ve bir saya artrlr. Porttaki
  istenen eksen biti tekrar sfr olduunda sayacn deeri kordinata eittir.
  Yani bu sistem son derece deiken ve birok yan etkiye ak bir sistemdir.
  Hzl bilgisayarlarda kordinat deerleri byk, yavalarda ise kk kar.

  Bu yzden Joystickle herahangi bir ilem yapmadan nce kalibrasyon denilen
  Joystick deerlerinin maksimumlarnn bulunup bunlardan bir oran karlmas
  ve program iindeki karlatrmalarda bu orann kullanlmas gerekir.

  Kalibrasyon iin Joystick kullancya apraz kelere ektirilir ve
  buralardaki deerleri program tarafndan alnr. En son olarak da ortadaki
  stabil posizyonundaki deerler de alndktan sonra kullanlacak oran
  hesaplanr.

                                   

 Bu aylk da bu kadar. Yabanc kaynaklardan bulduum rnek Pascal rutinini
  PASCAL ksmnda bulabilirsiniz. Byle kaynaklar bulduka size sunmaya devam
  edeceim. Bylece bazen "Pascalclara" da hazra konma frsat gelebilecek.

  Fakat gerek Pascal, gerek C olsun, pek farkl diller deil. Birini bilenin
  brn renmesi de, birinin kodunu brkne dntrmesi de zor iler
  deil. Hatta eer yanl hatrlamyorsam bizim dergi yllar nce Programlama
  Sanat kat zerindeyken bir Pascal'dan C'ye kod dntrme program
  vermiti. Her neyse...

  Geleck ay scak havalarda grmek zere hepinize iyi gnler.